Skip to content

Some kinds of fatal errors when starting the widget preview do not cause the process to terminate #185273

Description

@DanTup

Steps to reproduce

Moving this from Dart-Code/Dart-Code#6017 (comment) at @bkonyi's request

Some kinds of fatal errors when starting the widget preview are not reported in any way that is obviously fatal to the IDE, which can cause us to show "Starting widget preview server...." endlessly. For example when the SDK contains symlinks:

Mon Mar 30 2026 [14:19:45 GMT-0300 (Horário Padrão de Brasília)] Log file started
[14:20:09] <== [{"event":"widget_preview.initializing","params":{"pid":2604}}]
[14:20:09] <== [{"event":"widget_preview.logMessage","params":{"level":"warning","message":"Invalid Widget Preview Scaffold manifest at C:\\TMP\\flutter_tools.6e737b4c\\widget_preview_scaffold4a9cbc58\\preview_manifest.json. Regenerating Widget Preview Scaffold."}}]
[14:20:09] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Creating widget preview scaffolding at: C:\\TMP\\flutter_tools.6e737b4c\\widget_preview_scaffold4a9cbc58"}}]
[14:20:10] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Creating the Widget Preview Scaffold manifest at C:\\TMP\\flutter_tools.6e737b4c\\widget_preview_scaffold4a9cbc58\\preview_manifest.json"}}]
[14:20:12] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Finding previews in C:\\Fontes\\_local\\Flutter\\new_project..."}}]
[14:20:31] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Found 18 previews."}}]
[14:20:31] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Launching the Widget Preview Scaffold on Web Server..."}}]
[14:20:31] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Launching lib\\main.dart on Web Server in debug mode..."}}]
[14:20:34] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Waiting for connection from debug service on Web Server..."}}]
[14:20:34] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Error: SDK root directory not found: /C:/Users/felipe-m/.puro/envs/stable/flutter/bin/cache/flutter_web_sdk/."}}]
[14:20:59] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Failed to compile application."}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Detected change in C:\\Fontes\\_local\\Flutter\\new_project\\test\\widgets\\multi_options_input_widget_test.dart."}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Finding previews in C:\\Fontes\\_local\\Flutter\\new_project\\test\\widgets\\multi_options_input_widget_test.dart..."}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Found 0 previews."}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Updated previews for file:///C:/Fontes/_local/Flutter/new_project/test/widgets/multi_options_input_widget_test.dart: []"}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Triggering reload based on change to preview set: {(path: C:\\Fontes\\_local\\Flutter\\new_project\\lib\\main.dart, uri: package:new_project/main.dart): (<snip>
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Performing hot reload..."}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Waiting for connection from debug service on Web Server..."}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Null check operator used on a null value"}}]
[14:21:08] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Error: SDK root directory not found: /C:/Users/felipe-m/.puro/envs/stable/flutter/bin/cache/flutter_web_sdk/."}}]
[14:21:13] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Detected change in C:\\Fontes\\_local\\Flutter\\new_project\\test\\widgets\\multi_options_input_widget_test.dart."}}]
[14:21:13] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Finding previews in C:\\Fontes\\_local\\Flutter\\new_project\\test\\widgets\\multi_options_input_widget_test.dart..."}}]
[14:21:13] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Found 0 previews."}}]

The error:

Error: SDK root directory not found: /C:/Users/felipe-m/.puro/envs/stable/flutter/bin/cache/flutter_web_sdk/.

Appears to be fatal - it prevents the widget_preview.started event from ever arriving.

Expected results

If the issue above is not actually fatal, then the widget_preview.started event should still be emitted (which IDEs can use a signal that the server has finished starting up). If it is fatal, we should either crash, or provide some obvious signal to the IDE.

Actual results

widget_preview.started is never emitted and the server process never crashes. This makes it seem like the server is just still starting up endlessly to the IDE.

Code sample

N/A

Screenshots or Video

N/A

Logs

Logs
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.app.webLaunchUrl","params":{"url":"http://localhost:63349","launched":false}}]
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.started","params":{"url":"http://localhost:63349"}}]
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Null check operator used on a null value"}}]
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Null check operator used on a null value"}}]
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Null check operator used on a null value"}}]
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Null check operator used on a null value"}}]
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Null check operator used on a null value"}}]
[12:43:13 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"error","message":"Null check operator used on a null value"}}]
[12:43:18 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Debug service listening on ws://127.0.0.1:59738/EiU0bqabt94=/ws"}}]
[12:43:18 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"A Dart VM Service on Web Server is available at: http://127.0.0.1:59738/EiU0bqabt94="}}]
[12:43:18 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"The Flutter DevTools debugger and profiler on Web Server is available at: http://127.0.0.1:9101?uri=ws://127.0.0.1:59738/EiU0bqabt94=/ws"}}]
[12:43:18 PM] [FlutterWidgetPreview] [Info] <== [{"event":"widget_preview.logMessage","params":{"level":"status","message":"Done loading previews."}}]

Flutter Doctor output

Doctor output
PS D:\Dev> flutter doctor -v
[!] Flutter (Channel master, 3.44.0-1.0.pre-97, on Microsoft Windows [Version 10.0.26200.8246], locale en-GB) [2.9s]
    • Flutter version 3.44.0-1.0.pre-97 on channel master at D:\Dev\Google\Flutter\Flutter main
    ! Warning: `dart` on your path resolves to D:\Tools\Dart\Stable\bin\dart.exe, which is not inside your current Flutter SDK checkout at
      D:\Dev\Google\Flutter\Flutter main. Consider adding D:\Dev\Google\Flutter\Flutter main\bin to the front of your path.
    ! Upstream repository [email protected]:DanTup/flutter.git is not a standard remote.
      Set environment variable "FLUTTER_GIT_URL" to [email protected]:DanTup/flutter.git to dismiss this error.
    • Framework revision 4634b93d8c (5 days ago), 2026-04-15 11:23:23 +0000
    • Engine revision 4634b93d8c
    • Dart version 3.13.0 (build 3.13.0-19.0.dev)
    • DevTools version 2.57.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations,
      enable-native-assets, enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration, enable-riscv64
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and
      upgrades.

[✓] Windows Version (11 Pro 64-bit, 25H2, 2009) [616ms]

[!] Android toolchain - develop for Android devices (Android SDK version 35.0.0) [1,610ms]
    • Android SDK at C:\Users\danny\AppData\Local\Android\sdk
    • Emulator version 36.3.10.0 (build_id 14472402) (CL:N/A)
    • Platform android-36, build-tools 35.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.8+-14196175-b1038.72)
    ! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses

[✓] Chrome - develop for the web [56ms]
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop Windows apps (Visual Studio Community 2026 18.2.0) [55ms]
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\18\Community
    • Visual Studio Community 2026 version 18.2.11408.102
    • Windows 10 SDK version 10.0.26100.0

[✓] Connected device (3 available) [141ms]
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.26200.8246]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 147.0.7727.56
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 147.0.3912.60

[✓] Network resources [514ms]
    • All expected network resources are available.

! Doctor found issues in 2 categories

Metadata

Metadata

Assignees

Labels

platform-windowsBuilding on or for Windows specificallyteam-toolOwned by Flutter Tool teamtoolAffects the "flutter" command-line tool. See also t: labels.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions