Steps to Reproduce
Hello everyone.
First of all thank you for Flutter, I find the entire project amazing !
I am experiencing some troubles with my Drawer. It is a classical one, but when I open it, it crashes totally giving a strange error I can't really understand. According to the error log it is the line Navigator.of(context).popUntil(ModalRoute.withName('/')); which throws the exception. Detail is that when I comment this line, the next line is in cause. Finally, if I comment everything and just add Navigator.of(context).pop(), it throws also an exception (approximately the same). I don't really know how to interpret this. I thought first it was the component I am creating in the PageRouteBuilder which was not properly constructed, but no (or, seems to be well constructed). Thank you for your help ! 👍
Logs
Here is my code :
class CookyDrawer extends StatelessWidget {
final List<String> labels;
CookyDrawer({this.labels});
@override
Widget build(BuildContext context) {
return new Drawer(
child: new ListView(
padding: const EdgeInsets.only(top: 0.0),
children: _buildDrawerList(context),
),
);
}
_onListTileTap(BuildContext context, String labelName) {
Navigator.of(context).popUntil(ModalRoute.withName('/'));
Navigator.of(context).push(
new PageRouteBuilder(
pageBuilder: (BuildContext context, _, __) {
return new ScannerView(title: labelName,);
},
transitionsBuilder: (_, Animation<double> animation, __,
Widget child) {
return new FadeTransition(opacity: animation, child: child,);
}
)
);
}
List<Widget> _buildDrawerList(BuildContext context) {
List<Widget> children = [];
children.addAll(_buildUserAccount(context));
children.addAll(_buildLabelWidgets(context));
return children;
}
...
List<Widget> _buildLabelWidgets(BuildContext context) {
List<Widget> listTiles = [];
labels.forEach((labelName) {
listTiles.add(
new ListTile(
leading: new Icon(Icons.add),
title: new Text(labelName),
onTap: _onListTileTap(context, labelName),
)
);
});
return listTiles;
}
}
And here is the error log :
I/flutter ( 2929): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter ( 2929): The following assertion was thrown building CookyDrawer(dirty):
I/flutter ( 2929): setState() or markNeedsBuild() called during build.
I/flutter ( 2929): This _ModalScope widget cannot be marked as needing to build because the framework is already in the
I/flutter ( 2929): process of building widgets. A widget can be marked as needing to be built during the build phase
I/flutter ( 2929): only if one of its ancestors is currently building. This exception is allowed because the framework
I/flutter ( 2929): builds parent widgets before children, which means a dirty descendant will always be built.
I/flutter ( 2929): Otherwise, the framework might not visit this widget during this build phase.
I/flutter ( 2929): The widget on which setState() or markNeedsBuild() was called was:
I/flutter ( 2929): _ModalScope-[LabeledGlobalKey<_ModalScopeState>#fc7b8](state: _ModalScopeState#b75dd)
I/flutter ( 2929): The widget which was currently being built when the offending call was made was:
I/flutter ( 2929): CookyDrawer(dirty)
I/flutter ( 2929):
I/flutter ( 2929): When the exception was thrown, this was the stack:
I/flutter ( 2929): #0 Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:3419)
I/flutter ( 2929): #1 Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:3445)
I/flutter ( 2929): #2 State.setState (package:flutter/src/widgets/framework.dart:1124)
I/flutter ( 2929): #3 _ModalScopeState._routeSetState (package:flutter/src/widgets/routes.dart:458)
I/flutter ( 2929): #4 ModalRoute.setState (package:flutter/src/widgets/routes.dart:542)
I/flutter ( 2929): #5 ModalRoute.changedInternalState (package:flutter/src/widgets/routes.dart:971)
I/flutter ( 2929): #6 TransitionRoute&&LocalHistoryRoute.didPop (package:flutter/src/widgets/routes.dart:349)
I/flutter ( 2929): #7 NavigatorState.pop (package:flutter/src/widgets/navigator.dart:1183)
I/flutter ( 2929): #8 NavigatorState.popUntil (package:flutter/src/widgets/navigator.dart:1267)
I/flutter ( 2929): #9 CookyDrawer._onListTileTap (package:cooky_flutter/views/cooky_drawer.dart:24)
I/flutter ( 2929): #10 CookyDrawer._buildLabelWidgets.<anonymous closure> (package:cooky_flutter/views/cooky_drawer.dart:68)
I/flutter ( 2929): #11 List.forEach (dart:core-patch/dart:core/growable_array.dart:274)
I/flutter ( 2929): #12 CookyDrawer._buildLabelWidgets (package:cooky_flutter/views/cooky_drawer.dart:63)
I/flutter ( 2929): #13 CookyDrawer._buildDrawerList (package:cooky_flutter/views/cooky_drawer.dart:42)
I/flutter ( 2929): #14 CookyDrawer.build (package:cooky_flutter/views/cooky_drawer.dart:18)
I/flutter ( 2929): #15 StatelessElement.build (package:flutter/src/widgets/framework.dart:3678)
I/flutter ( 2929): #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3625)
I/flutter ( 2929): #17 Element.rebuild (package:flutter/src/widgets/framework.dart:3478)
I/flutter ( 2929): #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605)
I/flutter ( 2929): #19 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600)
I/flutter ( 2929): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636)
I/flutter ( 2929): #23 Element.rebuild (package:flutter/src/widgets/framework.dart:3478)
I/flutter ( 2929): #24 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605)
I/flutter ( 2929): #25 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600)
I/flutter ( 2929): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #28 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4611)
I/flutter ( 2929): #29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #30 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #31 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636)
I/flutter ( 2929): #32 Element.rebuild (package:flutter/src/widgets/framework.dart:3478)
I/flutter ( 2929): #33 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605)
I/flutter ( 2929): #34 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3741)
I/flutter ( 2929): #35 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600)
I/flutter ( 2929): #36 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #37 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #38 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4611)
I/flutter ( 2929): #39 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #41 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4611)
I/flutter ( 2929): #42 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #43 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #44 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4611)
I/flutter ( 2929): #45 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #46 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4716)
I/flutter ( 2929): #47 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #48 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #49 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4611)
I/flutter ( 2929): #50 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890)
I/flutter ( 2929): #51 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #52 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4618)
I/flutter ( 2929): #53 Element.updateChild (package:flutter/src/widgets/framework.dart:2682)
I/flutter ( 2929): #54 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636)
I/flutter ( 2929): #55 Element.rebuild (package:flutter/src/widgets/framework.dart:3478)
I/flutter ( 2929): #56 StatefulElement.update (package:flutter/src/widgets/framework.dart:3760)
I/flutter ( 2929): #57 Element.updateChild (package:flutter/src/widgets/framework.dart:2682)
I/flutter ( 2929): #58 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636)
I/flutter ( 2929): #59 Element.rebuild (package:flutter/src/widgets/framework.dart:3478)
I/flutter ( 2929): #60 StatelessElement.update (package:flutter/src/widgets/framework.dart:3685)
I/flutter ( 2929): #61 Element.updateChild (package:flutter/src/widgets/framework.dart:2682)
I/flutter ( 2929): #62 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2883)
I/flutter ( 2929): #63 Element.updateChild (package:flutter/src/widgets/framework.dart:2693)
I/flutter ( 2929): #64 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636)
I/flutter ( 2929): #65 Element.rebuild (package:flutter/src/widgets/framework.dart:3478)
I/flutter ( 2929): #66 ProxyElement.update (package:flutter/src/widgets/framework.dart:3870)
I/flutter ( 2929): #67 Element.updateChild (package:flutter/src/widgets/framework.dart:2682)
I/flutter ( 2929): #68 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636)
I/flutter ( 2929): #69 Element.rebuild (package:flutter/src/widgets/framework.dart:3478)
I/flutter ( 2929): #70 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2225)
I/flutter ( 2929): #71 BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:621)
I/flutter ( 2929): #72 BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208)
I/flutter ( 2929): #73 BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990)
I/flutter ( 2929): #74 BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930)
I/flutter ( 2929): #75 BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842)
I/flutter ( 2929): #76 _invoke (file:///b/build/slave/Linux_Engine/build/src/flutter/lib/ui/hooks.dart:120)
I/flutter ( 2929): #77 _drawFrame (file:///b/build/slave/Linux_Engine/build/src/flutter/lib/ui/hooks.dart:109)
I/flutter ( 2929): ════════════════════════════════════════════════════════════════════════════════════════════════════
Steps to Reproduce
Hello everyone.
First of all thank you for Flutter, I find the entire project amazing !
I am experiencing some troubles with my Drawer. It is a classical one, but when I open it, it crashes totally giving a strange error I can't really understand. According to the error log it is the line
Navigator.of(context).popUntil(ModalRoute.withName('/'));which throws the exception. Detail is that when I comment this line, the next line is in cause. Finally, if I comment everything and just addNavigator.of(context).pop(), it throws also an exception (approximately the same). I don't really know how to interpret this. I thought first it was the component I am creating in the PageRouteBuilder which was not properly constructed, but no (or, seems to be well constructed). Thank you for your help ! 👍Logs
Here is my code :
And here is the error log :