markNeedsCompositingBitsUpdate fails after re-attaching a RepaintBoundary #24029
Copy link
Copy link
Labels
c: crashStack traces logged to the consoleStack traces logged to the consolecustomer: crowdAffects or could affect many people, though not necessarily a specific customer.Affects or could affect many people, though not necessarily a specific customer.frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.t: hot reloadReloading code during "flutter run"Reloading code during "flutter run"
Description
I am able to trigger a reproducible assertion when adding (or removing) a padding argument to a Container and doing a hot-reload. Note that the assertion happens only during a hot-reload, not during a hot-restart nor when doing the initial flutter run.
I've tried to distill the reproduction case to be as small as possible. Note that the use of a GlobalKey, a GridView, and the BoxConstraints all seem to be relevant.
The failure
$ flutter run
Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering".
Launching lib/main.dart on Android SDK built for x86 in debug mode...
Initializing gradle... 0.7s
Resolving dependencies... 1.8s
Gradle task 'assembleDebug'... 3.8s
Built build/app/outputs/apk/debug/app-debug.apk.
Installing build/app/outputs/apk/app.apk... 0.8s
Syncing files to device Android SDK built for x86...
D/ (16785): HostConnection::get() New Host Connection established 0xde8a9fc0, tid 16811
D/EGL_emulation(16785): eglMakeCurrent: 0xe1205ca0: ver 2 0 (tinfo 0xcd0cf9e0)
2.5s
🔥 To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R".
An Observatory debugger and profiler on Android SDK built for x86 is available at: http://127.0.0.1:46673/
For a more detailed help message, press "h". To detach, press "d"; to quit, press "q".
Initializing hot reload... I/flutter (16785): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (16785): The following assertion was thrown building Container(constraints: BoxConstraints(0.0<=w<=Infinity,
I/flutter (16785): h=200.0)):
I/flutter (16785): 'package:flutter/src/rendering/object.dart': Failed assertion: line 1854 pos 12: '() {
I/flutter (16785): final AbstractNode parent = this.parent;
I/flutter (16785): if (parent is RenderObject)
I/flutter (16785): return parent._needsCompositing;
I/flutter (16785): return true;
I/flutter (16785): }()': is not true.
I/flutter (16785):
I/flutter (16785): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter (16785): more information in this error message to help you determine and fix the underlying cause.
I/flutter (16785): In either case, please report this assertion by filing a bug on GitHub:
I/flutter (16785): https://github.com/flutter/flutter/issues/new
I/flutter (16785):
I/flutter (16785): When the exception was thrown, this was the stack:
I/flutter (16785): #2 RenderObject.markNeedsCompositingBitsUpdate (package:flutter/src/rendering/object.dart:1854:12)
I/flutter (16785): #3 RenderObject.attach (package:flutter/src/rendering/object.dart:1294:7)
I/flutter (16785): #4 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.attach (package:flutter/src/rendering/object.dart:2720:11)
I/flutter (16785): #5 AbstractNode.adoptChild (package:flutter/src/foundation/node.dart:132:13)
I/flutter (16785): #6 RenderObject.adoptChild (package:flutter/src/rendering/object.dart:1139:11)
I/flutter (16785): #7 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.child= (package:flutter/src/rendering/object.dart:2715:7)
I/flutter (16785): #8 SingleChildRenderObjectElement.insertChildRenderObject (package:flutter/src/widgets/framework.dart:4815:18)
I/flutter (16785): #9 RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:4659:35)
I/flutter (16785): #10 Element.attachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2856:13)
I/flutter (16785): #11 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3716:14)
I/flutter (16785): #12 Element.attachRenderObject (package:flutter/src/widgets/framework.dart:2855:5)
I/flutter (16785): #13 Element.attachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2856:13)
I/flutter (16785): #14 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3716:14)
I/flutter (16785): #15 Element.attachRenderObject (package:flutter/src/widgets/framework.dart:2855:5)
I/flutter (16785): #16 Element.attachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2856:13)
I/flutter (16785): #17 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3716:14)
I/flutter (16785): #18 Element.attachRenderObject (package:flutter/src/widgets/framework.dart:2855:5)
I/flutter (16785): #19 Element.attachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2856:13)
I/flutter (16785): #20 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3716:14)
I/flutter (16785): #21 Element.attachRenderObject (package:flutter/src/widgets/framework.dart:2855:5)
I/flutter (16785): #22 Element.attachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2856:13)
I/flutter (16785): #23 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3716:14)
I/flutter (16785): #24 Element.attachRenderObject (package:flutter/src/widgets/framework.dart:2855:5)
I/flutter (16785): #25 Element._activateWithParent (package:flutter/src/widgets/framework.dart:3003:5)
I/flutter (16785): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2928:18)
I/flutter (16785): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:2739:12)
I/flutter (16785): #28 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4800:14)
I/flutter (16785): #29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2936:14)
I/flutter (16785): #30 Element.updateChild (package:flutter/src/widgets/framework.dart:2739:12)
I/flutter (16785): #31 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #32 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #33 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3662:5)
I/flutter (16785): #34 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3657:5)
I/flutter (16785): #35 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2936:14)
I/flutter (16785): #36 Element.updateChild (package:flutter/src/widgets/framework.dart:2739:12)
I/flutter (16785): #37 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4800:14)
I/flutter (16785): #38 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2936:14)
I/flutter (16785): #39 Element.updateChild (package:flutter/src/widgets/framework.dart:2739:12)
I/flutter (16785): #40 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #41 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #42 StatelessElement.update (package:flutter/src/widgets/framework.dart:3742:5)
I/flutter (16785): #43 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #44 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #45 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #46 StatelessElement.update (package:flutter/src/widgets/framework.dart:3742:5)
I/flutter (16785): #47 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #48 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #49 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #50 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #51 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #52 StatelessElement.update (package:flutter/src/widgets/framework.dart:3742:5)
I/flutter (16785): #53 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #54 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #55 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #56 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #57 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #58 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #59 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #60 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #61 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #62 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #63 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #64 StatefulElement.update (package:flutter/src/widgets/framework.dart:3839:5)
I/flutter (16785): #65 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #66 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #67 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #68 StatelessElement.update (package:flutter/src/widgets/framework.dart:3742:5)
I/flutter (16785): #69 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #70 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #71 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #72 StatefulElement.update (package:flutter/src/widgets/framework.dart:3839:5)
I/flutter (16785): #73 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #74 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #75 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #76 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #77 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #78 ProxyElement.update (package:flutter/src/widgets/framework.dart:3951:5)
I/flutter (16785): #79 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #80 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #81 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #82 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #83 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #84 StatefulElement.update (package:flutter/src/widgets/framework.dart:3839:5)
I/flutter (16785): #85 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #86 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #87 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #88 StatelessElement.update (package:flutter/src/widgets/framework.dart:3742:5)
I/flutter (16785): #89 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #90 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4807:14)
I/flutter (16785): #91 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #92 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #93 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #94 ProxyElement.update (package:flutter/src/widgets/framework.dart:3951:5)
I/flutter (16785): #95 Element.updateChild (package:flutter/src/widgets/framework.dart:2728:15)
I/flutter (16785): #96 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3693:16)
I/flutter (16785): #97 Element.rebuild (package:flutter/src/widgets/framework.dart:3530:5)
I/flutter (16785): #98 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2272:33)
I/flutter (16785): #99 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:673:20)
I/flutter (16785): #100 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:219:5)
I/flutter (16785): #101 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter (16785): #102 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter (16785): #103 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:751:7)
I/flutter (16785): #105 _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
I/flutter (16785): #106 _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
I/flutter (16785): #107 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
I/flutter (16785): (elided 3 frames from class _AssertionError and package dart:async)
I/flutter (16785): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (16785): Another exception was thrown: 'package:flutter/src/foundation/node.dart': Failed assertion: line 106 pos 12: '_owner != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/foundation/node.dart': Failed assertion: line 106 pos 12: '_owner != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 1153 pos 12: 'child.parentData != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/foundation/node.dart': Failed assertion: line 106 pos 12: '_owner != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/foundation/node.dart': Failed assertion: line 106 pos 12: '_owner != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 1153 pos 12: 'child.parentData != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 1153 pos 12: 'child.parentData != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/foundation/node.dart': Failed assertion: line 106 pos 12: '_owner != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/foundation/node.dart': Failed assertion: line 106 pos 12: '_owner != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 1153 pos 12: 'child.parentData != null': is not true.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3532 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
Reloaded 1 of 416 libraries in 674ms.
I/flutter (16785): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3532 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
I/flutter (16785): Another exception was thrown: NoSuchMethodError: The method '_enableMutationsToDirtySubtrees' was called on null.
I/flutter (16785): Another exception was thrown: NoSuchMethodError: The setter 'offset=' was called on null.
I/flutter (16785): Another exception was thrown: RenderBox was not laid out: RenderPadding#3ac5e NEEDS-PAINT DETACHED
I/flutter (16785): Another exception was thrown: 'package:flutter/src/rendering/box.dart': Failed assertion: line 1493 pos 18: 'debugDoingThisResize || debugDoingThisLayout ||
I/chatty (16785): uid=10080(com.example.visibilitydetectorsample) Thread-2 identical 2 lines
I/flutter (16785): Another exception was thrown: 'package:flutter/src/rendering/box.dart': Failed assertion: line 1493 pos 18: 'debugDoingThisResize || debugDoingThisLayout ||
I/flutter (16785): Another exception was thrown: NoSuchMethodError: The getter 'offset' was called on null.
Application finished.
The code
import 'package:flutter/material.dart';
void main() {
return runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
MyHomePage({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
// XXX: Removing (or adding) the following line and doing a hot-reload
// triggers a framework assertion. Hot restart is fine.
padding: const EdgeInsets.all(5),
child: Container(
constraints: const BoxConstraints(minHeight: 200, maxHeight: 200),
child: GridView.count(
key: _myKey,
crossAxisCount: 2,
children: <Widget>[Placeholder(), Placeholder()],
),
),
);
}
}
final _myKey = LabeledGlobalKey('MyKey');Doctor
$ flutter doctor -v
[✓] Flutter (Channel unknown, v0.10.2-pre.81, on Linux, locale en_US.UTF-8)
• Flutter version 0.10.2-pre.81 at /home/jamesdlin/git/flutter/flutter
• Framework revision 26131d917a (2 weeks ago), 2018-10-23 17:36:25 -0700
• Engine revision 3236b49cea
• Dart version 2.1.0 (build 2.1.0-dev.8.0 bf26f760b1)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3)
• Android SDK at /home/jamesdlin/Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: /home/jamesdlin/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
• All Android licenses accepted.
[✓] Android Studio (version 3.2)
• Android Studio at /home/jamesdlin/android-studio
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
[✓] VS Code (version 1.28.1)
• VS Code at /usr/share/code
• Flutter extension version 2.19.0
[✓] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (emulator)
• No issues found!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
c: crashStack traces logged to the consoleStack traces logged to the consolecustomer: crowdAffects or could affect many people, though not necessarily a specific customer.Affects or could affect many people, though not necessarily a specific customer.frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.t: hot reloadReloading code during "flutter run"Reloading code during "flutter run"
Activity
goderbauer commentedon Dec 4, 2018
The example can be reduced to:
goderbauer commentedon Dec 5, 2018
Notes from debugging this:
Explanation of why the assert is throwing: The hot reload calls
reassembleon all RenderObjects in the old pre-reload tree (here:RenderViewandRenderRepaintBoundary). This sets_needsCompositingBitsUpdateto true on theRenderRepaintBoundary. After that,RenderRepaintBoundaryis detached from theRenderViewviadropChildand a newRenderPaddingis adopted by theRenderViewviaadoptChild. BecauseRenderPaddingis a new object it has neitherneedsCompositingnor_needsCompositingBitsUpdateset to true. Last, but not least, we re-attach the existingRenderRepaintBoundaryto the newRenderPaddingviaadoptChild, which indirectly in [1] callsmarkNeedsCompositingBitsUpdateon theRenderRepaintBoundary. Because it's a repaint boundary and because the newly inserted parentRenderPaddingdoesn't haveneedsCompositingnor_needsCompositingBitsUpdateset to true the assert in there [2] fails.After adopting
RenderRepaintBoundaryas a child and thus after what's described aboveRenderPaddingactually marks itself as needing a compositing bits update in theadoptChild[3] method, but at that point it's too late for the assert. (The fatal call toRenderRepaintBoundary.markNeedsCompositingBitsUpdate()occurs before this in thesuper.adoptChildof [3]).A test case that implements this failure case is posted below.
[1]
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 1294 to 1297 in a226c0f
[2]
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 1856 to 1861 in a226c0f
[3]
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 1137 to 1145 in a226c0f
Test case that currently fails because of this:
goderbauer commentedon Dec 5, 2018
One way to fix this would be to change the order in
adoptChild[1] to callmarkNeedsCompositeBitsUpdate(andmarkNeedsLayoutandmarkNeedsSemanticsUpdate?) beforesuper.adoptChildto ensure that themarkNeedsCompositeBitsUpdateon the Child (executed withinsuper.adoptChild) finds an up to date parent. With that change all tests are still passing.Alternatively, we could change [2] line 1851 to also call
parent.markNeedsCompositeBitsUpdateif we are a RepaintBoundary, but our parent has not yet set_needsCompositingBitsUpdateto true:[1]
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 1137 to 1145 in a226c0f
[2]
flutter/packages/flutter/lib/src/rendering/object.dart
Lines 1843 to 1865 in a226c0f
[-]"'package:flutter/src/rendering/object.dart': Failed assertion: line 1854 pos 12" when doing a hot reload[/-][+]markNeedsCompositingBitsUpdate fails after re-attaching a RepaintBoundary[/+]jamesderlin commentedon Dec 14, 2018
I'm reopening since #25239 was reverted by #25382.
github-actions commentedon Aug 14, 2021
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.