Skip to content

Wrapping a Column with an expanded in a SingleChildScrollView throws an exception #18711

@escamoteur

Description

@escamoteur

Hi,

lets take this simple App, it should have a Textfield and a Text always at the bottom of the screen:

image

  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(),
      body: new Column(mainAxisSize: MainAxisSize.max,
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          new Text(
            'Line 1',
          ),
          new Text(
            'Line 2',
          ),
          Expanded(

            child: Container(
              alignment: Alignment.bottomCenter,
                          child: new Text(
                'Should be at the bottom',
              ),
            ),
          ),
        ],
      ),
    );
  }

Which is a pretty common use case. Unfortunately the Textfield at the bottom won't get scrolled into view when getting focus so I wrap the Scaffold in a SingleChildScrollView which leads to this exception:

I/flutter ( 6245): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 6245): The following assertion was thrown during performLayout():
I/flutter ( 6245): RenderCustomMultiChildLayoutBox object was given an infinite size during layout.
I/flutter ( 6245): This probably means that it is a render object that tries to be as big as possible, but it was put
I/flutter ( 6245): inside another render object that allows its children to pick their own size.
I/flutter ( 6245): The nearest ancestor providing an unbounded height constraint is:
I/flutter ( 6245):   _RenderSingleChildViewport#d8e19 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):   creator: _SingleChildViewport ← _ScrollableScope ← IgnorePointer-[GlobalKey#f839e] ← Semantics ←
I/flutter ( 6245):   Listener ← _GestureSemantics ←
I/flutter ( 6245):   RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#1b983] ←
I/flutter ( 6245):   _ExcludableScrollSemantics-[GlobalKey#92c21] ← RepaintBoundary ← CustomPaint ← RepaintBoundary ←
I/flutter ( 6245):   NotificationListener<ScrollNotification> ← ⋯
I/flutter ( 6245):   parentData: <none> (can use size)
I/flutter ( 6245):   constraints: BoxConstraints(w=411.4, h=683.4)
I/flutter ( 6245):   layer: OffsetLayer#3a690
I/flutter ( 6245):   size: Size(411.4, 683.4)
I/flutter ( 6245): The constraints that applied to the RenderCustomMultiChildLayoutBox were:
I/flutter ( 6245):   BoxConstraints(w=411.4, 0.0<=h<=Infinity)
I/flutter ( 6245): The exact size it was given was:
I/flutter ( 6245):   Size(411.4, Infinity)
I/flutter ( 6245): See https://flutter.io/layout/ for more information.
I/flutter ( 6245):
I/flutter ( 6245): When the exception was thrown, this was the stack:
I/flutter ( 6245): #0      RenderBox.debugAssertDoesMeetConstraints.<anonymous closure> (package:flutter/src/rendering/box.dart:1713:9)
I/flutter ( 6245): #1      RenderBox.debugAssertDoesMeetConstraints (package:flutter/src/rendering/box.dart:1787:6)
I/flutter ( 6245): #2      RenderBox.size=.<anonymous closure> (package:flutter/src/rendering/box.dart:1507:17)
I/flutter ( 6245): #3      RenderBox.size= (package:flutter/src/rendering/box.dart:1507:65)
I/flutter ( 6245): #4      RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:354:5)
I/flutter ( 6245): #5      RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #6      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #7      RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #8      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #9      _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1143:11)
I/flutter ( 6245): #10     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #11     _RenderSingleChildViewport.performLayout (package:flutter/src/widgets/single_child_scroll_view.dart:479:13)
I/flutter ( 6245): #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #13     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #15     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #17     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #19     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #21     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #22     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #23     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #24     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #25     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #26     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #27     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #28     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #29     _RenderSingleChildViewport.performLayout (package:flutter/src/widgets/single_child_scroll_view.dart:479:13)
I/flutter ( 6245): #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #31     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #32     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #33     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #34     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #35     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #36     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #37     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #38     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #39     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #40     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #41     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #42     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #43     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #44     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #45     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #46     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #47     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #48     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #49     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #50     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #51     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #52     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #53     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #54     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #55     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #56     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #57     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #58     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #59     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #60     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #61     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #62     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:2831:13)
I/flutter ( 6245): #63     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #64     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:520:15)
I/flutter ( 6245): #65     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #66     __RenderTheatre&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #67     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #68     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #69     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #70     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #71     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #72     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #73     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #74     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #75     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #76     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 6245): #77     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 6245): #78     RenderView.performLayout (package:flutter/src/rendering/view.dart:125:13)
I/flutter ( 6245): #79     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1451:7)
I/flutter ( 6245): #80     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:710:18)
I/flutter ( 6245): #81     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:270:19)
I/flutter ( 6245): #82     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:627:13)
I/flutter ( 6245): #83     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
I/flutter ( 6245): #84     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter ( 6245): #85     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter ( 6245): #86     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:751:7)
I/flutter ( 6245): #88     _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
I/flutter ( 6245): #89     _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
I/flutter ( 6245): #90     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:165:12)
I/flutter ( 6245): (elided one frame from package dart:async)
I/flutter ( 6245):
I/flutter ( 6245): The following RenderObject was being processed when the exception was fired:
I/flutter ( 6245):   RenderCustomMultiChildLayoutBox#1d542 relayoutBoundary=up12 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):   creator: CustomMultiChildLayout ← AnimatedBuilder ← DefaultTextStyle ← AnimatedDefaultTextStyle ←
I/flutter ( 6245):   _InkFeatures-[GlobalKey#a15e8 ink renderer] ← NotificationListener<LayoutChangedNotification> ←
I/flutter ( 6245):   PhysicalModel ← AnimatedPhysicalModel ← Material ← PrimaryScrollController ← _ScaffoldScope ←
I/flutter ( 6245):   Scaffold ← ⋯
I/flutter ( 6245):   parentData: <none> (can use size)
I/flutter ( 6245):   constraints: BoxConstraints(w=411.4, 0.0<=h<=Infinity)
I/flutter ( 6245):   size: Size(411.4, Infinity)
I/flutter ( 6245): This RenderObject had the following descendants (showing up to depth 5):
I/flutter ( 6245):   RenderFlex#d05ae NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):     RenderParagraph#be72d NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):     RenderParagraph#707ac NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):     RenderSemanticsAnnotations#04c80 NEEDS-LAYOUT NEEDS-PAINT
Reloaded 0 of 391 libraries in 391ms.
I/flutter ( 6245):       RenderIgnorePointer#2bbea NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):         RenderPointerListener#01e0d NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):           _RenderDecoration#7a351 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):     RenderPositionedBox#faaa5 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):       RenderFlex#46117 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):         RenderSemanticsAnnotations#3fc96 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):           RenderIgnorePointer#8523d NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):         RenderParagraph#43155 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):   RenderConstrainedBox#160a1 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):     RenderSemanticsAnnotations#7b97b NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):       RenderPhysicalModel#c472f NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):         _RenderInkFeatures#902a3 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):           RenderPositionedBox#87b65 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):   RenderStack#4e7f8 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):     RenderTransform#0443a NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245):       RenderTransform#92ca9 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 6245): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter ( 6245): Another exception was thrown: _RenderInkFeatures object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderPhysicalModel object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: _RenderSingleChildViewport object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderIgnorePointer object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderSemanticsAnnotations object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderPointerListener object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderSemanticsGestureHandler object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: _RenderExcludableScrollSemantics object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderRepaintBoundary object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderCustomPaint object was given an infinite size during layout.
I/flutter ( 6245): Another exception was thrown: RenderRepaintBoundary object was given an infinite size during layout.
D/EGL_emulation( 6245): eglMakeCurrent: 0xa51053c0: ver 3 1 (tinfo 0xa51032d0)
Lost connection to device.
Exited (sigterm)

Moving the SingleChildScrollView inside the Scaffold's body doesn't work either:

Launching lib\main.dart on Android SDK built for x86 in debug mode...
Built build\app\outputs\apk\debug\app-debug.apk.
D/EGL_emulation( 5210): eglMakeCurrent: 0xa301bbc0: ver 3 1 (tinfo 0xa0f9b970)
E/eglCodecCommon( 5210): glUtilsParamSize: unknow param 0x000082da
E/eglCodecCommon( 5210): glUtilsParamSize: unknow param 0x000082da
I/Choreographer( 5210): Skipped 36 frames!  The application may be doing too much work on its main thread.
D/EGL_emulation( 5210): eglMakeCurrent: 0xa7785360: ver 3 1 (tinfo 0xa77832c0)
I/flutter ( 5210): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 5210): The following assertion was thrown during performLayout():
I/flutter ( 5210): RenderCustomMultiChildLayoutBox object was given an infinite size during layout.
I/flutter ( 5210): This probably means that it is a render object that tries to be as big as possible, but it was put
I/flutter ( 5210): inside another render object that allows its children to pick their own size.
I/flutter ( 5210): The nearest ancestor providing an unbounded height constraint is:
I/flutter ( 5210):   _RenderSingleChildViewport#89ed7 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):   creator: _SingleChildViewport ← _ScrollableScope ← IgnorePointer-[GlobalKey#fde50] ← Semantics ←
I/flutter ( 5210):   Listener ← _GestureSemantics ←
I/flutter ( 5210):   RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#c830f] ←
I/flutter ( 5210):   _ExcludableScrollSemantics-[GlobalKey#cf513] ← RepaintBoundary ← CustomPaint ← RepaintBoundary ←
I/flutter ( 5210):   NotificationListener<ScrollNotification> ← ⋯
I/flutter ( 5210):   parentData: <none> (can use size)
I/flutter ( 5210):   constraints: BoxConstraints(w=411.4, h=683.4)
I/flutter ( 5210):   size: MISSING
I/flutter ( 5210): The constraints that applied to the RenderCustomMultiChildLayoutBox were:
I/flutter ( 5210):   BoxConstraints(w=411.4, 0.0<=h<=Infinity)
I/flutter ( 5210): The exact size it was given was:
I/flutter ( 5210):   Size(411.4, Infinity)
I/flutter ( 5210): See https://flutter.io/layout/ for more information.
I/flutter ( 5210):
I/flutter ( 5210): When the exception was thrown, this was the stack:
I/flutter ( 5210): #0      RenderBox.debugAssertDoesMeetConstraints.<anonymous closure> (package:flutter/src/rendering/box.dart:1713:9)
I/flutter ( 5210): #1      RenderBox.debugAssertDoesMeetConstraints (package:flutter/src/rendering/box.dart:1787:6)
I/flutter ( 5210): #2      RenderBox.size=.<anonymous closure> (package:flutter/src/rendering/box.dart:1507:17)
I/flutter ( 5210): #3      RenderBox.size= (package:flutter/src/rendering/box.dart:1507:65)
I/flutter ( 5210): #4      RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:354:5)
I/flutter ( 5210): #5      RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #6      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #7      RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #8      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #9      _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1143:11)
I/flutter ( 5210): #10     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #11     _RenderSingleChildViewport.performLayout (package:flutter/src/widgets/single_child_scroll_view.dart:479:13)
I/flutter ( 5210): #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #13     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #15     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #17     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #19     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #21     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #22     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #23     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #24     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #25     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #26     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #27     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #28     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #29     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #31     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #32     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #33     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #34     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #35     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #36     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #37     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #38     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #39     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #40     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #41     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #42     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #43     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #44     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:2831:13)
I/flutter ( 5210): #45     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #46     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:520:15)
I/flutter ( 5210): #47     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #48     __RenderTheatre&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #49     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #50     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #51     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #52     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #53     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #54     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #55     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #56     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #57     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #58     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 5210): #59     RenderObject.layout (package:flutter/src/rendering/object.dart:1576:7)
I/flutter ( 5210): #60     RenderView.performLayout (package:flutter/src/rendering/view.dart:125:13)
I/flutter ( 5210): #61     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1451:7)
I/flutter ( 5210): #62     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:710:18)
I/flutter ( 5210): #63     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:270:19)
I/flutter ( 5210): #64     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:627:13)
I/flutter ( 5210): #65     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
I/flutter ( 5210): #66     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter ( 5210): #67     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter ( 5210): #68     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:751:7)
I/flutter ( 5210): #70     _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
I/flutter ( 5210): #71     _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
I/flutter ( 5210): #72     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:165:12)
I/flutter ( 5210): (elided one frame from package dart:async)
I/flutter ( 5210):
I/flutter ( 5210): The following RenderObject was being processed when the exception was fired:
I/flutter ( 5210):   RenderCustomMultiChildLayoutBox#eb8b9 relayoutBoundary=up3 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):   creator: CustomMultiChildLayout ← AnimatedBuilder ← DefaultTextStyle ← AnimatedDefaultTextStyle ←
I/flutter ( 5210):   _InkFeatures-[GlobalKey#3eaee ink renderer] ← NotificationListener<LayoutChangedNotification> ←
I/flutter ( 5210):   PhysicalModel ← AnimatedPhysicalModel ← Material ← PrimaryScrollController ← _ScaffoldScope ←
I/flutter ( 5210):   Scaffold ← ⋯
I/flutter ( 5210):   parentData: <none> (can use size)
I/flutter ( 5210):   constraints: BoxConstraints(w=411.4, 0.0<=h<=Infinity)
I/flutter ( 5210):   size: Size(411.4, Infinity)
I/flutter ( 5210): This RenderObject had the following descendants (showing up to depth 5):
I/flutter ( 5210):   RenderRepaintBoundary#62484 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):     RenderCustomPaint#ee167 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):       RenderRepaintBoundary#44385 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):         _RenderExcludableScrollSemantics#ef2e6 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):           RenderSemanticsGestureHandler#bc5d6 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):   RenderConstrainedBox#39c3a NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):     RenderSemanticsAnnotations#1c8b4 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):       RenderPhysicalModel#f70a8 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):         _RenderInkFeatures#c0f45 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):           RenderPositionedBox#8924a NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):   RenderStack#a0002 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):     RenderTransform#ca415 NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210):       RenderTransform#c49ab NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 5210): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter ( 5210): Another exception was thrown: _RenderInkFeatures object was given an infinite size during layout.
I/flutter ( 5210): Another exception was thrown: RenderPhysicalModel object was given an infinite size during layout.
I/flutter ( 5210): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#62484 NEEDS-LAYOUT NEEDS-PAINT
D/        ( 5210): HostConnection::get() New Host Connection established 0xa77888c0, tid 5232
D/EGL_emulation( 5210): eglMakeCurrent: 0xa301bbc0: ver 3 1 (tinfo 0xa7783210)

I know that there is a workaround explained here https://docs.flutter.io/flutter/widgets/SingleChildScrollView-class.html but for such a standard requirement of using Expanded inside a Column that must be able to scroll up when the keyboard appears there should be a better solution. @Hixie wrote that Scaffold would take care of this but obviously doesn't.

Please see also #18558 which shows another limitation of the workaround.

The sample app is here https://github.com/escamoteur/column_in_scrollable_repro

Metadata

Metadata

Assignees

Labels

a: text inputEntering text in a text field or keyboard related problemsd: api docsIssues with https://api.flutter.dev/d: examplesSample code and demosframeworkflutter/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