Skip to content

A few hot restarts in a row cause a canvaskit failure #90236

@annagrin

Description

@annagrin

Repro:

  • open examples/hello_world in VSCode, chose web platform
  • set a breakpoint on line that calls runApp
  • debug
  • when the breakpoint is hit, click hot restart a few times in a row

The app shows "hello world" but continues to throw the assertion after that.

VSCode debug console output

Error: Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/canvaskit/surface_factory.dart:157:12
_cache.contains(surface)
is not true
    at Object.throw_ [as throw] (http://localhost:56119/dart_sdk.js:5081:11)
    at Object.assertFailed (http://localhost:56119/dart_sdk.js:5006:15)
    at _engine.SurfaceFactory.new.isLive (http://localhost:56119/dart_sdk.js:148814:51)
    at _engine.Surface.new.[_contextLostListener] (http://localhost:56119/dart_sdk.js:148511:19)
Restarted application in 80ms.

Chrome console output

Chrome console output
This app is linked to the debug service: ws://127.0.0.1:56210/YikfKpifYBY%3D/ws
canvaskit.js:180 WARNING: Too many active WebGL contexts. Oldest context will be lost.
a.wf.a.getContext @ canvaskit.js:180
ha @ canvaskit.js:180
a.GetWebGLContext @ canvaskit.js:15
[_createNewCanvas] @ surface.dart:296
createOrUpdateSurfaces @ surface.dart:175
acquireFrame @ surface.dart:105
draw @ rasterizer.dart:27
render @ platform_dispatcher.dart:577
render @ window.dart:93
compositeFrame @ view.dart:229
drawFrame @ binding.dart:457
drawFrame @ binding.dart:883
[_handlePersistentFrameCallback] @ binding.dart:319
[_invokeFrameCallback] @ binding.dart:1148
handleDrawFrame @ binding.dart:1084
(anonymous) @ binding.dart:863
internalCallback @ isolate_helper.dart:48
setTimeout (async)
_isolate_helper.TimerImpl.new @ isolate_helper.dart:55
_createTimer @ async_patch.dart:186
createTimer @ zone.dart:1711
new @ timer.dart:45
run @ timer.dart:81
scheduleWarmUpFrame @ binding.dart:861
(anonymous) @ binding.dart:1037
runApp @ binding.dart:1037
main$ @ main.dart:8
main @ web_entrypoint.dart:16
(anonymous) @ async_patch.dart:45
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future.dart:401
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
(anonymous) @ js_util.dart:261
Promise.then (async)
promiseToFuture @ js_util.dart:273
[dartx.arrayBuffer] @ html_dart2js.dart:1683
[_getArrayBuffer] @ fonts.dart:176
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
(anonymous) @ js_util.dart:261
Promise.then (async)
promiseToFuture @ js_util.dart:273
[dartx.fetch] @ html_dart2js.dart:32916
httpFetch @ util.dart:559
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
httpFetch @ util.dart:558
_registerFont @ fonts.dart:148
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
[_registerFont] @ fonts.dart:145
registerFonts @ fonts.dart:136
(anonymous) @ async_patch.dart:45
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
(anonymous) @ html_dart2js.dart:18196
_checkAndCall @ operations.dart:334
dcall @ operations.dart:339
(anonymous) @ html_dart2js.dart:37308
load (async)
[_addEventListener] @ html_dart2js.dart:15823
[dartx.addEventListener] @ html_dart2js.dart:15811
[_tryResume] @ html_dart2js.dart:37362
_EventStreamSubscription.new @ html_dart2js.dart:37309
listen @ html_dart2js.dart:37209
request @ html_dart2js.dart:18183
load @ assets.dart:58
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
load @ assets.dart:54
registerFonts @ fonts.dart:95
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
registerFonts @ fonts.dart:91
webOnlySetAssetManager @ initialization.dart:68
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
webOnlySetAssetManager @ initialization.dart:49
_initializePlatform @ initialization.dart:33
(anonymous) @ async_patch.dart:45
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
initializeCanvasKit @ initialization.dart:108
_initializePlatform @ initialization.dart:29
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
_initializePlatform @ initialization.dart:21
webOnlyInitializePlatform @ initialization.dart:11
main @ web_entrypoint.dart:12
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
main$ @ web_entrypoint.dart:11
(anonymous) @ main_module.bootstrap.js:19
window.$dartRunMain @ main_module.bootstrap.js:18
(anonymous) @ VM964:1
runMain @ client.js:8453
(anonymous) @ client.js:24361
(anonymous) @ client.js:4462
call$2 @ client.js:11512
call$1 @ client.js:11500
runUnary$2$2 @ client.js:13164
call$0 @ client.js:11928
_Future__propagateToListeners @ client.js:4604
_completeWithValue$1 @ client.js:11770
complete$1 @ client.js:11483
_asyncReturn @ client.js:4434
(anonymous) @ client.js:24398
(anonymous) @ client.js:4462
call$2 @ client.js:11512
call$1 @ client.js:11500
runUnary$2$2 @ client.js:13164
call$0 @ client.js:11928
_Future__propagateToListeners @ client.js:4604
_completeWithValue$1 @ client.js:11770
call$0 @ client.js:11856
_microtaskLoop @ client.js:4668
_startMicrotaskLoop @ client.js:4674
call$1 @ client.js:11388
invokeClosure @ client.js:1524
(anonymous) @ client.js:1543
childList (async)
call$1 @ client.js:11398
_scheduleAsyncCallback @ client.js:4688
_rootScheduleMicrotask @ client.js:4879
scheduleMicrotask$1 @ client.js:13189
_asyncCompleteWithValue$1 @ client.js:11792
_asyncComplete$1 @ client.js:11786
complete$1 @ client.js:11566
call$1 @ client.js:17001
call$1 @ client.js:18043
invokeClosure @ client.js:1524
(anonymous) @ client.js:1543
load (async)
_addEventListener$3 @ client.js:16886
addEventListener$3 @ client.js:16880
addEventListener$3$x @ client.js:3999
_tryResume$0 @ client.js:18025
_EventStreamSubscription$ @ client.js:8549
HttpRequest_request @ client.js:8524
(anonymous) @ client.js:24389
(anonymous) @ client.js:4462
call$2 @ client.js:11512
_asyncStartSync @ client.js:4426
_getDigests$0 @ client.js:24401
(anonymous) @ client.js:24322
(anonymous) @ client.js:4462
call$2 @ client.js:11512
call$1 @ client.js:11500
runUnary$2$2 @ client.js:13164
call$0 @ client.js:11928
_Future__propagateToListeners @ client.js:4604
_completeWithValue$1 @ client.js:11770
call$0 @ client.js:11856
_microtaskLoop @ client.js:4668
_startMicrotaskLoop @ client.js:4674
call$1 @ client.js:11388
invokeClosure @ client.js:1524
(anonymous) @ client.js:1543
childList (async)
call$1 @ client.js:11398
_scheduleAsyncCallback @ client.js:4688
_rootScheduleMicrotask @ client.js:4879
scheduleMicrotask$1 @ client.js:13189
_asyncCompleteWithValue$1 @ client.js:11792
_asyncComplete$1 @ client.js:11786
complete$1 @ client.js:11566
eval @ VM920:3
Primitives_applyFunction @ client.js:1194
Function_apply @ client.js:5900
_callDartFunctionFast @ client.js:7907
(anonymous) @ client.js:7898
Promise.then (async)
then$2 @ client.js:9223
then$2$x @ client.js:4089
(anonymous) @ client.js:24314
(anonymous) @ client.js:4462
call$2 @ client.js:11512
_asyncStartSync @ client.js:4426
restart$0 @ client.js:24371
(anonymous) @ client.js:24249
(anonymous) @ client.js:4462
call$2 @ client.js:11512
_asyncStartSync @ client.js:4426
hotRestart$0 @ client.js:24263
call$0 @ client.js:23995
Primitives_applyFunction @ client.js:1191
Function_apply @ client.js:5900
_callDartFunctionFast @ client.js:7907
(anonymous) @ client.js:7898
(anonymous) @ VM963:1
Show 46 more frames
errors.dart:202 Uncaught Error: Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/canvaskit/surface_factory.dart:157:12
_cache.contains(surface)
is not true
    at Object.throw_ [as throw] (errors.dart:251)
    at Object.assertFailed (errors.dart:29)
    at _engine.SurfaceFactory.new.isLive (surface_factory.dart:157)
    at _engine.Surface.new.[_contextLostListener] (surface.dart:233)
DartError @ errors.dart:202
throw_ @ errors.dart:251
assertFailed @ errors.dart:29
isLive @ surface_factory.dart:157
[_contextLostListener] @ surface.dart:233
canvaskit.js:180 WARNING: Too many active WebGL contexts. Oldest context will be lost.
a.wf.a.getContext @ canvaskit.js:180
ha @ canvaskit.js:180
a.GetWebGLContext @ canvaskit.js:15
[_createNewCanvas] @ surface.dart:296
createOrUpdateSurfaces @ surface.dart:175
acquireFrame @ surface.dart:105
draw @ rasterizer.dart:27
render @ platform_dispatcher.dart:577
render @ window.dart:93
compositeFrame @ view.dart:229
drawFrame @ binding.dart:457
drawFrame @ binding.dart:883
[_handlePersistentFrameCallback] @ binding.dart:319
[_invokeFrameCallback] @ binding.dart:1148
handleDrawFrame @ binding.dart:1084
(anonymous) @ binding.dart:863
internalCallback @ isolate_helper.dart:48
setTimeout (async)
_isolate_helper.TimerImpl.new @ isolate_helper.dart:55
_createTimer @ async_patch.dart:186
createTimer @ zone.dart:1711
new @ timer.dart:45
run @ timer.dart:81
scheduleWarmUpFrame @ binding.dart:861
(anonymous) @ binding.dart:1037
runApp @ binding.dart:1037
main$ @ main.dart:8
main @ web_entrypoint.dart:16
(anonymous) @ async_patch.dart:45
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future.dart:401
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
(anonymous) @ js_util.dart:261
Promise.then (async)
promiseToFuture @ js_util.dart:273
[dartx.arrayBuffer] @ html_dart2js.dart:1683
[_getArrayBuffer] @ fonts.dart:176
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
(anonymous) @ js_util.dart:261
Promise.then (async)
promiseToFuture @ js_util.dart:273
[dartx.fetch] @ html_dart2js.dart:32916
httpFetch @ util.dart:559
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
httpFetch @ util.dart:558
_registerFont @ fonts.dart:148
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
[_registerFont] @ fonts.dart:145
registerFonts @ fonts.dart:136
(anonymous) @ async_patch.dart:45
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
(anonymous) @ html_dart2js.dart:18196
_checkAndCall @ operations.dart:334
dcall @ operations.dart:339
(anonymous) @ html_dart2js.dart:37308
load (async)
[_addEventListener] @ html_dart2js.dart:15823
[dartx.addEventListener] @ html_dart2js.dart:15811
[_tryResume] @ html_dart2js.dart:37362
_EventStreamSubscription.new @ html_dart2js.dart:37309
listen @ html_dart2js.dart:37209
request @ html_dart2js.dart:18183
load @ assets.dart:58
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
load @ assets.dart:54
registerFonts @ fonts.dart:95
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
registerFonts @ fonts.dart:91
webOnlySetAssetManager @ initialization.dart:68
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
webOnlySetAssetManager @ initialization.dart:49
_initializePlatform @ initialization.dart:33
(anonymous) @ async_patch.dart:45
runUnary @ zone.dart:1687
handleValue @ future_impl.dart:160
handleValueCallback @ future_impl.dart:767
_propagateToListeners @ future_impl.dart:796
[_completeWithValue] @ future_impl.dart:602
(anonymous) @ future_impl.dart:640
_microtaskLoop @ schedule_microtask.dart:40
_startMicrotaskLoop @ schedule_microtask.dart:49
(anonymous) @ async_patch.dart:166
Promise.then (async)
_scheduleImmediateWithPromise @ async_patch.dart:164
_scheduleImmediate @ async_patch.dart:136
_scheduleAsyncCallback @ schedule_microtask.dart:69
_rootScheduleMicrotask @ zone.dart:1495
scheduleMicrotask @ zone.dart:1707
[_asyncCompleteWithValue] @ future_impl.dart:639
[_asyncComplete] @ future_impl.dart:634
complete @ future_impl.dart:46
initializeCanvasKit @ initialization.dart:108
_initializePlatform @ initialization.dart:29
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
_initializePlatform @ initialization.dart:21
webOnlyInitializePlatform @ initialization.dart:11
main @ web_entrypoint.dart:12
runBody @ async_patch.dart:84
_async @ async_patch.dart:123
main$ @ web_entrypoint.dart:11
(anonymous) @ main_module.bootstrap.js:19
window.$dartRunMain @ main_module.bootstrap.js:18
(anonymous) @ VM967:1
runMain @ client.js:8453
(anonymous) @ client.js:24361
(anonymous) @ client.js:4462
call$2 @ client.js:11512
call$1 @ client.js:11500
runUnary$2$2 @ client.js:13164
call$0 @ client.js:11928
_Future__propagateToListeners @ client.js:4604
_completeWithValue$1 @ client.js:11770
complete$1 @ client.js:11483
_asyncReturn @ client.js:4434
(anonymous) @ client.js:24398
(anonymous) @ client.js:4462
call$2 @ client.js:11512
call$1 @ client.js:11500
runUnary$2$2 @ client.js:13164
call$0 @ client.js:11928
_Future__propagateToListeners @ client.js:4604
_completeWithValue$1 @ client.js:11770
call$0 @ client.js:11856
_microtaskLoop @ client.js:4668
_startMicrotaskLoop @ client.js:4674
call$1 @ client.js:11388
invokeClosure @ client.js:1524
(anonymous) @ client.js:1543
childList (async)
call$1 @ client.js:11398
_scheduleAsyncCallback @ client.js:4688
_rootScheduleMicrotask @ client.js:4879
scheduleMicrotask$1 @ client.js:13189
_asyncCompleteWithValue$1 @ client.js:11792
_asyncComplete$1 @ client.js:11786
complete$1 @ client.js:11566
call$1 @ client.js:17001
call$1 @ client.js:18043
invokeClosure @ client.js:1524
(anonymous) @ client.js:1543
load (async)
_addEventListener$3 @ client.js:16886
addEventListener$3 @ client.js:16880
addEventListener$3$x @ client.js:3999
_tryResume$0 @ client.js:18025
_EventStreamSubscription$ @ client.js:8549
HttpRequest_request @ client.js:8524
(anonymous) @ client.js:24389
(anonymous) @ client.js:4462
call$2 @ client.js:11512
_asyncStartSync @ client.js:4426
_getDigests$0 @ client.js:24401
(anonymous) @ client.js:24322
(anonymous) @ client.js:4462
call$2 @ client.js:11512
call$1 @ client.js:11500
runUnary$2$2 @ client.js:13164
call$0 @ client.js:11928
_Future__propagateToListeners @ client.js:4604
_completeWithValue$1 @ client.js:11770
call$0 @ client.js:11856
_microtaskLoop @ client.js:4668
_startMicrotaskLoop @ client.js:4674
call$1 @ client.js:11388
invokeClosure @ client.js:1524
(anonymous) @ client.js:1543
childList (async)
call$1 @ client.js:11398
_scheduleAsyncCallback @ client.js:4688
_rootScheduleMicrotask @ client.js:4879
scheduleMicrotask$1 @ client.js:13189
_asyncCompleteWithValue$1 @ client.js:11792
_asyncComplete$1 @ client.js:11786
complete$1 @ client.js:11566
eval @ VM920:3
Primitives_applyFunction @ client.js:1194
Function_apply @ client.js:5900
_callDartFunctionFast @ client.js:7907
(anonymous) @ client.js:7898
Promise.then (async)
then$2 @ client.js:9223
then$2$x @ client.js:4089
(anonymous) @ client.js:24314
(anonymous) @ client.js:4462
call$2 @ client.js:11512
_asyncStartSync @ client.js:4426
restart$0 @ client.js:24371
(anonymous) @ client.js:24249
(anonymous) @ client.js:4462
call$2 @ client.js:11512
_asyncStartSync @ client.js:4426
hotRestart$0 @ client.js:24263
call$0 @ client.js:23995
Primitives_applyFunction @ client.js:1191
Function_apply @ client.js:5900
_callDartFunctionFast @ client.js:7907
(anonymous) @ client.js:7898
(anonymous) @ VM966:1
Show 46 more frames

Flutter doctor output

flutter doctor -v
[✓] Flutter (Channel master, 2.6.0-6.0.pre.120, on macOS 11.6 20G165 darwin-x64, locale
    en-US)
    • Flutter version 2.6.0-6.0.pre.120 at source/flutter/flutter
    • Upstream repository [email protected]:annagrin/flutter.git
    • Framework revision f10f3e79a6 (76 minutes ago), 2021-09-16 17:57:07 -0400
    • Engine revision 33f5f17bc9
    • Dart version 2.15.0 (build 2.15.0-113.0.dev)

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/annagrin/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more
      details.

[✓] Xcode - develop for iOS and macOS (Xcode 12.5.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[✓] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 55.1.5
    • Dart plugin version 211.6693.108

[✓] VS Code (version 1.60.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.26.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.6 20G165 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 93.0.4577.82

! Doctor found issues in 1 category.

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work listdependency: dartDart team may need to help use: web_canvaskitCanvasKit (a.k.a. Skia-on-WebGL) rendering backend for Webengineflutter/engine related. See also e: labels.found in release: 2.6Found to occur in 2.6has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specificallyr: fixedIssue is closed as already fixed in a newer versiontoolAffects 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