-
Notifications
You must be signed in to change notification settings - Fork 557
Open
Description
This one's only happening in the demo branch, only when using a mouse. It happens if your cursor was over one of the characters and the inactivity timeout pops you back to the welcome screen. The stack seems to suggest that in the process of detaching, the Listener fires the onPointerExit callback. We call setState when that happens, which causes this error. The error message, however, mentions that we are in a build phase...either way, is there a good way to detect either condition and avoid calling setState, or is there something more fundamental going on here?
This ends up putting the demo in an unrecoverable state.
I/flutter ( 6197): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter ( 6197): The following assertion was thrown building Overlay-[LabeledGlobalKey<OverlayState>#e7924](state:
I/flutter ( 6197): OverlayState#1e814(tickers: tracking 0 tickers, entries: [OverlayEntry#56a87(opaque: false;
I/flutter ( 6197): maintainState: false), OverlayEntry#e61e6(opaque: false; maintainState: true),
I/flutter ( 6197): OverlayEntry#5b713(opaque: true; maintainState: false), OverlayEntry#5be4e(opaque: false;
I/flutter ( 6197): maintainState: true)])):
I/flutter ( 6197): setState() or markNeedsBuild() called during build.
I/flutter ( 6197): This CharacterListItem widget cannot be marked as needing to build because the framework is already
I/flutter ( 6197): in the process of building widgets. A widget can be marked as needing to be built during the build
I/flutter ( 6197): phase only if one of its ancestors is currently building. This exception is allowed because the
I/flutter ( 6197): framework builds parent widgets before children, which means a dirty descendant will always be
I/flutter ( 6197): built. Otherwise, the framework might not visit this widget during this build phase.
I/flutter ( 6197): The widget on which setState() or markNeedsBuild() was called was:
I/flutter ( 6197): CharacterListItem(state: _CharacterListItemState#9f280)
I/flutter ( 6197): The widget which was currently being built when the offending call was made was:
I/flutter ( 6197): Overlay-[LabeledGlobalKey<OverlayState>#e7924](state: OverlayState#1e814(tickers: tracking 0
I/flutter ( 6197): tickers, entries: [OverlayEntry#56a87(opaque: false; maintainState: false),
I/flutter ( 6197): OverlayEntry#e61e6(opaque: false; maintainState: true), OverlayEntry#5b713(opaque: true;
I/flutter ( 6197): maintainState: false), OverlayEntry#5be4e(opaque: false; maintainState: true)]))
I/flutter ( 6197):
I/flutter ( 6197): When the exception was thrown, this was the stack:
I/flutter ( 6197): #0 Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:3503:11)
I/flutter ( 6197): #1 Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:3529:6)
I/flutter ( 6197): #2 State.setState (package:flutter/src/widgets/framework.dart:1133:14)
I/flutter ( 6197): #3 _CharacterListItemState._stopPlaying (package:dev_rpg/src/game_screen/character_pool_page.dart:91:44)
I/flutter ( 6197): #4 MouseTracker.detachAnnotation (package:flutter/src/gestures/mouse_tracking.dart:125:20)
I/flutter ( 6197): #5 RenderPointerListener.detach (package:flutter/src/rendering/proxy_box.dart:2593:45)
I/flutter ( 6197): #6 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #7 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #8 _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin.detach (package:flutter/src/rendering/object.dart:3032:13)
I/flutter ( 6197): #9 RenderSliverMultiBoxAdaptor.detach (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:305:11)
I/flutter ( 6197): #10 _RenderSliverPadding&RenderSliver&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #11 _RenderViewportBase&RenderBox&ContainerRenderObjectMixin.detach (package:flutter/src/rendering/object.dart:3032:13)
I/flutter ( 6197): #12 RenderViewportBase.detach (package:flutter/src/rendering/viewport.dart:285:11)
I/flutter ( 6197): #13 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #14 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #15 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #16 RenderPointerListener.detach (package:flutter/src/rendering/proxy_box.dart:2595:11)
I/flutter ( 6197): #17 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #18 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #19 RenderPointerListener.detach (package:flutter/src/rendering/proxy_box.dart:2595:11)
I/flutter ( 6197): #20 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #21 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #22 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #23 RenderCustomPaint.detach (package:flutter/src/rendering/custom_paint.dart:496:11)
I/flutter ( 6197): #24 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #25 _RenderStack&RenderBox&ContainerRenderObjectMixin.detach (package:flutter/src/rendering/object.dart:3032:13)
I/flutter ( 6197): #26 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #27 _RenderFlex&RenderBox&ContainerRenderObjectMixin.detach (package:flutter/src/rendering/object.dart:3032:13)
I/flutter ( 6197): #28 _RenderCustomMultiChildLayoutBox&RenderBox&ContainerRenderObjectMixin.detach (package:flutter/src/rendering/object.dart:3032:13)
I/flutter ( 6197): #29 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #30 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #31 _RenderCustomClip.detach (package:flutter/src/rendering/proxy_box.dart:1189:11)
I/flutter ( 6197): #32 __RenderLayoutBuilder&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #33 __RenderLayoutBuilder&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #34 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #35 RenderPointerListener.detach (package:flutter/src/rendering/proxy_box.dart:2595:11)
I/flutter ( 6197): #36 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #37 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #38 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #39 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #40 RenderAnimatedOpacity.detach (package:flutter/src/rendering/proxy_box.dart:887:11)
I/flutter ( 6197): #41 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #42 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #43 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #44 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin.detach (package:flutter/src/rendering/object.dart:2774:14)
I/flutter ( 6197): #45 AbstractNode.dropChild (package:flutter/src/foundation/node.dart:147:13)
I/flutter ( 6197): #46 RenderObject.dropChild (package:flutter/src/rendering/object.dart:1169:11)
I/flutter ( 6197): #47 _RenderStack&RenderBox&ContainerRenderObjectMixin.remove (package:flutter/src/rendering/object.dart:2977:5)
I/flutter ( 6197): #48 MultiChildRenderObjectElement.removeChildRenderObject (package:flutter/src/widgets/framework.dart:4957:18)
I/flutter ( 6197): #49 RenderObjectElement.detachRenderObject (package:flutter/src/widgets/framework.dart:4744:36)
I/flutter ( 6197): #50 Element.detachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2867:13)
I/flutter ( 6197): #51 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3770:14)
I/flutter ( 6197): #52 Element.detachRenderObject (package:flutter/src/widgets/framework.dart:2866:5)
I/flutter ( 6197): #53 Element.detachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2867:13)
I/flutter ( 6197): #54 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3770:14)
I/flutter ( 6197): #55 Element.detachRenderObject (package:flutter/src/widgets/framework.dart:2866:5)
I/flutter ( 6197): #56 Element.detachRenderObject.<anonymous closure> (package:flutter/src/widgets/framework.dart:2867:13)
I/flutter ( 6197): #57 ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:3770:14)
I/flutter ( 6197): #58 Element.detachRenderObject (package:flutter/src/widgets/framework.dart:2866:5)
I/flutter ( 6197): #59 Element.deactivateChild (package:flutter/src/widgets/framework.dart:2996:11)
I/flutter ( 6197): #60 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4694:11)
I/flutter ( 6197): #61 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4992:17)
I/flutter ( 6197): #62 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
I/flutter ( 6197): #63 _TheatreElement.update (package:flutter/src/widgets/overlay.dart:607:16)
I/flutter ( 6197): #64 Element.updateChild (package:flutter/src/widgets/framework.dart:2753:15)
I/flutter ( 6197): #65 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3750:16)
I/flutter ( 6197): #66 Element.rebuild (package:flutter/src/widgets/framework.dart:3565:5)
I/flutter ( 6197): #67 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2278:33)
I/flutter ( 6197): #68 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:700:20)
I/flutter ( 6197): #69 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:286:5)
I/flutter ( 6197): #70 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1012:15)
I/flutter ( 6197): #71 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:952:9)
I/flutter ( 6197): #72 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:864:5)
I/flutter ( 6197): #76 _invoke (dart:ui/hooks.dart:219:10)
I/flutter ( 6197): #77 _drawFrame (dart:ui/hooks.dart:178:3)
I/flutter ( 6197): (elided 3 frames from package dart:async)
I/flutter ( 6197): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter ( 6197): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2276 pos 16: '!_dirtyElements[index]._active || _dirtyElements[index]._debugIsInScope(context)': is not true.
I/flutter ( 6197): Another exception was thrown: Navigator operation requested with a context that does not include a Navigator.
I/flutter ( 6197): Another exception was thrown: Navigator operation requested with a context that does not include a Navigator.
I/flutter ( 6197): Another exception was thrown: Navigator operation requested with a context that does not include a Navigator.
I/flutter ( 6197): Another exception was thrown: Navigator operation requested with a context that does not include a Navigator.
I/flutter ( 6197): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2276 pos 16: '!_dirtyElements[index]._active || _dirtyElements[index]._debugIsInScope(context)': is not true.
I/flutter ( 6197): Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2276 pos 16: '!_dirtyElements[index]._active || _dirtyElements[index]._debugIsInScope(context)': is not true.
I/flutter ( 6197): Another exception was thrown: Duplicate GlobalKeys detected in widget tree.
Metadata
Metadata
Assignees
Labels
No labels