auto_route_library icon indicating copy to clipboard operation
auto_route_library copied to clipboard

Throw error: 'setState() or markNeedsBuild() called during build.'

Open sososdk opened this issue 2 years ago • 11 comments

Ref: 955cad85d63778c24340bbd50aff01dfeaa12f6f

Throw error when click Collect user data:

======== Exception caught by foundation library ====================================================
The following assertion was thrown while dispatching notifications for AutoRouterDelegate:
setState() or markNeedsBuild() called during build.

This Router<Object> widget cannot be marked as needing to build because the framework is already in the process of building widgets.  A widget can be marked as needing to be built during the build phase only if one of its ancestors is currently building. This exception is allowed because the framework builds parent widgets before children, which means a dirty descendant will always be built. Otherwise, the framework might not visit this widget during this build phase.
The widget on which setState() or markNeedsBuild() was called was: Router<Object>
  dependencies: [UnmanagedRestorationScope]
  state: _RouterState<Object>#b966d
The widget which was currently being built when the offending call was made was: HeroControllerScope
When the exception was thrown, this was the stack: 
#0      Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4305:11)
#1      Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:4320:6)
#2      State.setState (package:flutter/src/widgets/framework.dart:1108:15)
#3      _RouterState._handleRouterDelegateNotification (package:flutter/src/widgets/router.dart:717:5)
#4      ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:308:24)
#5      AutoRouterDelegate._handleRebuild (package:auto_route/src/router/controller/auto_router_delegate.dart:120:5)
#6      ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:308:24)
#7      NavigationHistory._onNewUrlState (package:auto_route/src/router/controller/navigation_history.dart:26:7)
#8      NativeNavigationHistory._onNewUrlState (package:auto_route/src/router/controller/navigation_history.dart:120:11)
#9      StackRouter.updateDeclarativeRoutes (package:auto_route/src/router/controller/routing_controller.dart:954:23)
#10     _AutoRouteNavigatorState._updateDeclarativeRoutes (package:auto_route/src/router/widgets/auto_route_navigator.dart:46:21)
#11     _AutoRouteNavigatorState.didChangeDependencies (package:auto_route/src/router/widgets/auto_route_navigator.dart:37:7)
#12     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4826:11)
#13     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4638:5)
...     Normal element mounting (39 frames)
#52     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#53     MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6333:36)
#54     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6344:32)
...     Normal element mounting (93 frames)
#147    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#148    Element.updateChild (package:flutter/src/widgets/framework.dart:3425:18)
#149    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#150    _InheritedProviderScopeElement.performRebuild (package:provider/src/inherited_provider.dart:456:11)
#151    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#152    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4643:5)
#153    ComponentElement.mount (package:flutter/src/widgets/framework.dart:4638:5)
#154    _InheritedProviderScopeElement.mount (package:provider/src/inherited_provider.dart:356:11)
...     Normal element mounting (7 frames)
#161    SingleChildWidgetElementMixin.mount (package:nested/nested.dart:222:11)
...     Normal element mounting (30 frames)
#191    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#192    MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6333:36)
#193    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6344:32)
...     Normal element mounting (173 frames)
#366    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#367    MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6333:36)
#368    Element.updateChild (package:flutter/src/widgets/framework.dart:3425:18)
#369    RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5758:32)
#370    MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6356:17)
#371    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#372    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#373    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#374    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#375    StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#376    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#377    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#378    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#379    ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#380    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#381    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#382    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#383    ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#384    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:181:11)
#385    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#386    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#387    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#388    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#389    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#390    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#391    StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#392    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#393    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#394    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#395    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
#396    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#397    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#398    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#399    ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#400    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#401    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#402    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#403    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#404    StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#405    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#406    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#407    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#408    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#409    StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#410    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#411    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#412    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#413    ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#414    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#415    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#416    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#417    ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#418    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#419    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#420    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#421    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#422    StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
#423    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#424    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#425    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#426    StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
#427    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#428    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#429    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#430    ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#431    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#432    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#433    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#434    ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
#435    Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
#436    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
#437    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
#438    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
#439    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2620:33)
#440    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#441    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:319:5)
#442    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1143:15)
#443    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1080:9)
#444    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5)
#448    _invoke (dart:ui/hooks.dart:166:10)
#449    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5)
#450    _drawFrame (dart:ui/hooks.dart:129:31)
(elided 3 frames from dart:async)
The AutoRouterDelegate sending notification was: Instance of 'AutoRouterDelegate'
====================================================================================================

sososdk avatar Nov 17 '21 02:11 sososdk

I'm having a similar issue, the bug seems to have been introduced in https://github.com/Milad-Akarie/auto_route_library/pull/833. Works fine with 3.1.2.

samu-developments avatar Nov 20 '21 21:11 samu-developments

Yep, I'm also getting this issue with 3.1.3. This happens whenever my app initializes.

Restarted application in 3,442ms.
W/quarksoup.sofi(18166): Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)

════════ Exception caught by foundation library ════════════════════════════════
The following assertion was thrown while dispatching notifications for _DeclarativeAutoRouterDelegate:
setState() or markNeedsBuild() called during build.

This Router<Object> widget cannot be marked as needing to build because the framework is already in the process of building widgets.  A widget can be marked as needing to be built during the build phase only if one of its ancestors is currently building. This exception is allowed because the framework builds parent widgets before children, which means a dirty descendant will always be built. Otherwise, the framework might not visit this widget during this build phase.
The widget on which setState() or markNeedsBuild() was called was: Router<Object>
    dependencies: [UnmanagedRestorationScope]
    state: _RouterState<Object>#a41ab
The widget which was currently being built when the offending call was made was: StackRouterScope
When the exception was thrown, this was the stack
#0      Element.markNeedsBuild.<anonymous closure>
#1      Element.markNeedsBuild
#2      State.setState
#3      _RouterState._handleRouterDelegateNotification
#4      ChangeNotifier.notifyListeners
#5      AutoRouterDelegate._handleRebuild
#6      ChangeNotifier.notifyListeners
#7      NavigationHistory._onNewUrlState
#8      NativeNavigationHistory._onNewUrlState
#9      StackRouter.updateDeclarativeRoutes
#10     _AutoRouteNavigatorState._updateDeclarativeRoutes
#11     _AutoRouteNavigatorState.didChangeDependencies
#12     StatefulElement._firstBuild
#13     ComponentElement.mount
...     Normal element mounting (360 frames)
#373    Element.inflateWidget
#374    Element.updateChild
#375    ComponentElement.performRebuild
#376    _InheritedProviderScopeElement.performRebuild
#377    Element.rebuild
#378    ComponentElement._firstBuild
#379    ComponentElement.mount
#380    _InheritedProviderScopeElement.mount
...     Normal element mounting (7 frames)
#387    SingleChildWidgetElementMixin.mount
...     Normal element mounting (7 frames)
#394    _NestedHookElement.mount
#395    Element.inflateWidget
#396    Element.updateChild
#397    ComponentElement.performRebuild
#398    _InheritedProviderScopeElement.performRebuild
#399    Element.rebuild
#400    ComponentElement._firstBuild
#401    ComponentElement.mount
#402    _InheritedProviderScopeElement.mount
...     Normal element mounting (7 frames)
#409    SingleChildWidgetElementMixin.mount
...     Normal element mounting (7 frames)
#416    _NestedHookElement.mount
#417    Element.inflateWidget
#418    Element.updateChild
#419    ComponentElement.performRebuild
#420    _InheritedProviderScopeElement.performRebuild
#421    Element.rebuild
#422    ComponentElement._firstBuild
#423    ComponentElement.mount
#424    _InheritedProviderScopeElement.mount
...     Normal element mounting (7 frames)
#431    SingleChildWidgetElementMixin.mount
...     Normal element mounting (7 frames)
#438    _NestedHookElement.mount
#439    Element.inflateWidget
#440    Element.updateChild
#441    ComponentElement.performRebuild
#442    _InheritedProviderScopeElement.performRebuild
#443    Element.rebuild
#444    ComponentElement._firstBuild
#445    ComponentElement.mount
#446    _InheritedProviderScopeElement.mount
...     Normal element mounting (7 frames)
#453    SingleChildWidgetElementMixin.mount
...     Normal element mounting (7 frames)
#460    _NestedHookElement.mount
#461    Element.inflateWidget
#462    Element.updateChild
#463    ComponentElement.performRebuild
#464    _InheritedProviderScopeElement.performRebuild
#465    Element.rebuild
#466    ComponentElement._firstBuild
#467    ComponentElement.mount
#468    _InheritedProviderScopeElement.mount
...     Normal element mounting (7 frames)
#475    SingleChildWidgetElementMixin.mount
...     Normal element mounting (7 frames)
#482    _NestedHookElement.mount
...     Normal element mounting (7 frames)
#489    SingleChildWidgetElementMixin.mount
...     Normal element mounting (17 frames)
#506    Element.inflateWidget
#507    Element.updateChild
#508    RenderObjectToWidgetElement._rebuild
#509    RenderObjectToWidgetElement.mount
#510    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure>
#511    BuildOwner.buildScope
#512    RenderObjectToWidgetAdapter.attachToRenderTree
#513    WidgetsBinding.attachRootWidget
#514    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure>
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
The _DeclarativeAutoRouterDelegate sending notification was: Instance of '_DeclarativeAutoRouterDelegate'
════════════════════════════════════════════════════════════════════════════════
W/System  (18166): Ignoring header X-Firebase-Locale because its value was null.
D/FirebaseAuth(18166): Notifying id token listeners about user ( J49bpLvm8UaJFxxGL9haGtPj9LF2 ).

════════ Exception caught by foundation library ════════════════════════════════
setState() or markNeedsBuild() called during build.
═══════════════════════════════════════════════════════════════════════════════

ObserverMoment avatar Nov 21 '21 13:11 ObserverMoment

Hey @sososdk , @samu-developments,

Did either of you work out what was going on here? Taking a look now but my knowledge of the workings of this package is limited..

Do we know if this is a bug in the package or something else?

Cheers

ObserverMoment avatar Nov 24 '21 17:11 ObserverMoment

I get the same with 3.1 an 3.0 but since a short while - perhaps some other library upgrade caused this.

ayushin avatar Dec 01 '21 08:12 ayushin

I get the same with 3.1 an 3.0 but since a short while - perhaps some other library upgrade caused this.

Did u find out what library creates this error?

artemmmon avatar Dec 02 '21 10:12 artemmmon

Same here.

Which version of Flutter do you use?

Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 2.5.3, on macOS 12.0.1 21A559 darwin-x64, locale en-GB) [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [✓] Android Studio (version 2020.3) [✓] VS Code (version 1.62.0) [✓] Connected device (2 available)

ropy avatar Dec 02 '21 15:12 ropy

Am also on Flutter (Channel stable, 2.5.3, on macOS 12.0.1 21A559 darwin-x64, locale en-GB).

Latest versions of Auto_route and its generator.

ObserverMoment avatar Dec 06 '21 11:12 ObserverMoment

As per my comment in #873 I managed to get declarative routing to work with version auto_route: 3.1.2 and auto_route_generator: ^3.1.0 (Flutter 2.5.3)~~, but it currently breaks hot-reloading (nothing under MaterialApp is loaded after a hot-reload). I suspect that's what 3.1.3 was trying to solve (although I'm a new user, so I have no idea what worked and what didn't before all this)~~

Almighty-Alpaca avatar Dec 06 '21 15:12 Almighty-Alpaca

Is there any update on when this will be fixed?

kansson avatar Dec 08 '21 19:12 kansson

Dropping down to exact version 3.1.2 has stopped this error from happening for me. I am not noticing any hot-reload issues but will keep an eye out for anything weird. Looks like some bug in 3.1.3.

ObserverMoment avatar Dec 09 '21 10:12 ObserverMoment

Same issue here in version 3.1.3. Any soluction?

FernandoAndrade83 avatar Aug 04 '22 21:08 FernandoAndrade83

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions

github-actions[bot] avatar Oct 04 '22 08:10 github-actions[bot]