Skip to content

Multiple Forms in TabView calling setState() in onChanged callback #18063

@qwezey

Description

@qwezey

This happens every time I have a dirty form on one tab, move to another tab with the same form and come back.

@MSchrenker commented a test case below to reproduce a similar issue.

flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following assertion was thrown building NotificationListener<KeepAliveNotification>:
flutter: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2756 pos 14:
flutter: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
flutter:
flutter: Either the assertion indicates an error in the framework itself, or we should provide substantially
flutter: more information in this error message to help you determine and fix the underlying cause.
flutter: In either case, please report this assertion by filing a bug on GitHub:
flutter:   https://github.com/flutter/flutter/issues/new
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #2      _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin._insertIntoChildList (package:flutter/src/rendering/object.dart)
flutter: #3      _RenderSliverMultiBoxAdaptor&RenderSliver&ContainerRenderObjectMixin.insert (package:flutter/src/rendering/object.dart:2790:5)
flutter: #4      RenderSliverMultiBoxAdaptor.insert (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:209:11)
flutter: #5      SliverMultiBoxAdaptorElement.insertChildRenderObject (package:flutter/src/widgets/sliver.dart:863:18)
flutter: #6      RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:4513:35)
flutter: #7      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4279:5)
flutter: #8      SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4653:11)
flutter: #9      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2907:14)
flutter: #10     Element.updateChild (package:flutter/src/widgets/framework.dart:2710:12)
flutter: #11     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #12     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #13     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3622:5)
flutter: #14     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3617:5)
flutter: #15     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2907:14)
flutter: #16     Element.updateChild (package:flutter/src/widgets/framework.dart:2710:12)
flutter: #17     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #18     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #19     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3622:5)
flutter: #20     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3617:5)
flutter: #21     ParentDataElement.mount (package:flutter/src/widgets/framework.dart:3955:11)
flutter: #22     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2907:14)
flutter: #23     Element.updateChild (package:flutter/src/widgets/framework.dart:2710:12)
flutter: #24     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #25     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #26     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3622:5)
flutter: #27     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3769:11)
flutter: #28     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3617:5)
flutter: #29     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2907:14)
flutter: #30     Element.updateChild (package:flutter/src/widgets/framework.dart:2710:12)
flutter: #31     SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:744:36)
flutter: #32     SliverMultiBoxAdaptorElement.performRebuild (package:flutter/src/widgets/sliver.dart:702:34)
flutter: #33     SliverMultiBoxAdaptorElement.update (package:flutter/src/widgets/sliver.dart:671:7)
flutter: #34     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #35     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4379:32)
flutter: #36     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4769:17)
flutter: #37     _ViewportElement.update (package:flutter/src/widgets/viewport.dart:192:11)
flutter: #38     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #39     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #40     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #41     ProxyElement.update (package:flutter/src/widgets/framework.dart:3909:5)
flutter: #42     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #43     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4661:14)
flutter: #44     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #45     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4661:14)
flutter: #46     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #47     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4661:14)
flutter: #48     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #49     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4661:14)
flutter: #50     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #51     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #52     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #53     StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #54     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #55     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4661:14)
flutter: #56     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #57     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #58     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #59     StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #60     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #61     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #62     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #63     StatelessElement.update (package:flutter/src/widgets/framework.dart:3702:5)
flutter: #64     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #65     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #66     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #67     StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #68     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #69     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #70     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #71     StatelessElement.update (package:flutter/src/widgets/framework.dart:3702:5)
flutter: #72     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #73     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #74     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #75     StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #76     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #77     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #78     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #79     ProxyElement.update (package:flutter/src/widgets/framework.dart:3909:5)
flutter: #80     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #81     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #82     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #83     ProxyElement.update (package:flutter/src/widgets/framework.dart:3909:5)
flutter: #84     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #85     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:4379:32)
flutter: #86     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4769:17)
flutter: #87     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #88     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #89     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #90     StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #91     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #92     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #93     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #94     ProxyElement.update (package:flutter/src/widgets/framework.dart:3909:5)
flutter: #95     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #96     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #97     Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #98     StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #99     Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #100    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4661:14)
flutter: #101    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #102    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #103    Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #104    StatelessElement.update (package:flutter/src/widgets/framework.dart:3702:5)
flutter: #105    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #106    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4661:14)
flutter: #107    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #108    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #109    Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #110    StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #111    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #112    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #113    Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #114    StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #115    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #116    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #117    Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #118    ProxyElement.update (package:flutter/src/widgets/framework.dart:3909:5)
flutter: #119    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #120    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #121    Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #122    ProxyElement.update (package:flutter/src/widgets/framework.dart:3909:5)
flutter: #123    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #124    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #125    Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #126    StatefulElement.update (package:flutter/src/widgets/framework.dart:3799:5)
flutter: #127    Element.updateChild (package:flutter/src/widgets/framework.dart:2699:15)
flutter: #128    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3653:16)
flutter: #129    Element.rebuild (package:flutter/src/widgets/framework.dart:3495:5)
flutter: #130    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2242:33)
flutter: #131    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:626:20)
flutter: #132    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
flutter: #133    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
flutter: #134    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
flutter: #135    _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
flutter: #136    _invoke (dart:ui/hooks.dart:120:13)
flutter: #137    _drawFrame (dart:ui/hooks.dart:109:3)
flutter: (elided 2 frames from class _AssertionError)
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2756 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
flutter: Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2756 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
flutter: Another exception was thrown: 'package:flutter/src/rendering/object.dart': Failed assertion: line 2756 pos 14: '_debugUltimatePreviousSiblingOf(after, equals: _firstChild)': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 3497 pos 14: 'owner._debugCurrentBuildTarget == this': is not true.
flutter: Another exception was thrown: type 'RenderErrorBox' is not a subtype of type 'RenderSemanticsGestureHandler'

Metadata

Metadata

Assignees

No one assigned

    Labels

    c: crashStack traces logged to the consolef: material designflutter/packages/flutter/material repository.frameworkflutter/packages/flutter repository. See also f: labels.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions