Skip to content

Scrollable calls setState within a build phase due to extent change #5846

@apwilson

Description

@apwilson
11:01:05.832: I/flutter : ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
11:01:05.834: I/flutter : The following assertion was thrown during performLayout():
11:01:05.837: I/flutter : Build scheduled during frame.
11:01:05.839: I/flutter : While the widget tree was being built, laid out, and painted, a new frame was scheduled to rebuild
11:01:05.841: I/flutter : the widget tree. This might be because setState() was called from a layout or paint callback. If a
11:01:05.844: I/flutter : change is needed to the widget tree, it should be applied as the tree is being built. Scheduling a
11:01:05.846: I/flutter : change for the subsequent frame instead results in an interface that lags behind by one frame. If
11:01:05.849: I/flutter : this was done to make your build dependent on a size measured at layout time, consider using a
11:01:05.852: I/flutter : LayoutBuilder, CustomSingleChildLayout, or CustomMultiChildLayout. If, on the other hand, the one
11:01:05.855: I/flutter : frame delay is the desired effect, for example because this is an animation, consider scheduling the
11:01:05.857: I/flutter : frame in a post-frame callback using SchedulerBinding.addPostFrameCallback or using an
11:01:05.860: I/flutter : AnimationController to trigger the animation.
11:01:05.895: I/flutter : When the exception was thrown, this was the stack:
11:01:05.904: I/flutter : #0      BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding&WidgetsBinding._handleBuildScheduled.<anonymous closure> (package:flutter/src/widgets/binding.dart:199:9)
11:01:05.907: I/flutter : #2      BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding&WidgetsBinding._handleBuildScheduled (package:flutter/src/widgets/binding.dart:197:12)
11:01:05.909: I/flutter : #3      BuildOwner.scheduleBuildFor (package:flutter/src/widgets/framework.dart:1456:23)
11:01:05.912: I/flutter : #4      BuildableElement.markNeedsBuild (package:flutter/src/widgets/framework.dart:2223:11)
11:01:05.914: I/flutter : #5      State.setState (package:flutter/src/widgets/framework.dart:840:14)
11:01:05.916: I/flutter : #6      ScrollableState._setScrollOffset (package:flutter/src/widgets/scrollable.dart:386:5)
11:01:05.919: I/flutter : #7      ScrollableState.scrollTo (package:flutter/src/widgets/scrollable.dart:431:7)
11:01:05.922: I/flutter : #8      ScrollableState.didUpdateScrollBehavior (package:flutter/src/widgets/scrollable.dart:468:5)
11:01:05.924: I/flutter : #9      ScrollableState.handleExtentsChanged (package:flutter/src/widgets/scrollable.dart:481:5)
11:01:05.927: I/flutter : #10     ScrollableViewport._buildViewport.<anonymous closure> (package:flutter/src/widgets/scrollable.dart:916:15)
11:01:05.929: I/flutter : #11     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:289:46)
11:01:05.932: I/flutter : #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.934: I/flutter : #13     RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:91:13)
11:01:05.937: I/flutter : #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.939: I/flutter : #15     RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:91:13)
11:01:05.942: I/flutter : #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.945: I/flutter : #17     RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:91:13)
11:01:05.947: I/flutter : #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.950: I/flutter : #19     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:249:13)
11:01:05.953: I/flutter : #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.955: I/flutter : #21     RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:336:13)
11:01:05.958: I/flutter : #22     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.960: I/flutter : #23     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:394:15)
11:01:05.963: I/flutter : #24     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.965: I/flutter : #25     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:354:15)
11:01:05.968: I/flutter : #26     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.971: I/flutter : #27     RenderConstrainedOverflowBox.performLayout (package:flutter/src/rendering/shifted_box.dart:512:13)
11:01:05.973: I/flutter : #28     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.976: I/flutter : #29     RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:91:13)
11:01:05.978: I/flutter : #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.981: I/flutter : #31     RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:249:13)
11:01:05.983: I/flutter : #32     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.986: I/flutter : #33     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:421:15)
11:01:05.989: I/flutter : #34     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.991: I/flutter : #35     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:203:13)
11:01:05.994: I/flutter : #36     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:05.997: I/flutter : #37     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:354:15)
11:01:05.999: I/flutter : #38     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:06.002: I/flutter : #39     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:203:13)
11:01:06.004: I/flutter : #40     RenderObject.layout (package:flutter/src/rendering/object.dart:1546:21)
11:01:06.007: I/flutter : #41     RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:471:17)
11:01:06.009: I/flutter : #42     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1424:21)
11:01:06.012: I/flutter : #43     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:874:18)
11:01:06.015: I/flutter : #44     BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding.beginFrame (package:flutter/src/rendering/binding.dart:202:19)
11:01:06.018: I/flutter : #45     BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding&WidgetsBinding.beginFrame (package:flutter/src/widgets/binding.dart:297:23)
11:01:06.021: I/flutter : #46     BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:147:5)
11:01:06.024: I/flutter : #47     BindingBase&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:608:15)
11:01:06.027: I/flutter : #48     BindingBase&SchedulerBinding.handleBeginFrame (package:flutter/src/scheduler/binding.dart:543:9)
11:01:06.030: I/flutter : #49     _beginFrame (file:///b/build/slave/Linux_Engine/build/src/flutter/lib/ui/hooks.dart:48)

Metadata

Metadata

Assignees

Labels

f: scrollingViewports, list views, slivers, etc.frameworkflutter/packages/flutter repository. See also f: labels.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions