Skip to content

SingleChildScrollView with child Center throws unhelpful error #112935

@Lasslos

Description

@Lasslos

I had an error today whose cause I don't totally understand, and the error message was unhelpful and told me to file an issue here

Steps to Reproduce

  1. Execute flutter run on the code sample

Expected results:
Working UI with pageView

Actual results:

Unhelpful Error Message
======== Exception caught by rendering library =====================================================
The following assertion was thrown during paint():
'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 550 pos 12: 'child.hasSize': is not true.


Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=2_bug.md

The relevant error-causing widget was: 
  PageView PageView:file:///C:/Users/Laslo/Development/test_project/lib/main.dart:22:22
When the exception was thrown, this was the stack: 
#2      RenderSliverMultiBoxAdaptor.paintExtentOf (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:550:12)
#3      RenderSliverMultiBoxAdaptor.paint (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:659:79)
#4      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2796:7)
#5      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:239:13)
#6      RenderSliverEdgeInsetsPadding.paint (package:flutter/src/rendering/sliver_padding.dart:286:15)
#7      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2796:7)
#8      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:239:13)
#9      RenderViewportBase._paintContents (package:flutter/src/rendering/viewport.dart:677:17)
#10     PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:460:12)
#11     PaintingContext.pushClipRect (package:flutter/src/rendering/object.dart:520:7)
#12     RenderViewportBase.paint (package:flutter/src/rendering/viewport.dart:652:38)
#13     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2796:7)
#14     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:155:11)
#15     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:98:5)
#16     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1116:31)
#17     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:515:19)
#18     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:884:13)
#19     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:378:5)
#20     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1175:15)
#21     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1104:9)
#22     SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:881:7)
(elided 6 frames from class _AssertionError, class _RawReceivePortImpl, class _Timer, and dart:async-patch)
The following RenderObject was being processed when the exception was fired: RenderSliverFillViewport#d1392 relayoutBoundary=up2
...  needs compositing
...  parentData: paintOffset=Offset(0.0, 0.0) (can use size)
...  constraints: SliverConstraints(AxisDirection.right, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 411.4, crossAxisExtent: 867.4, crossAxisDirection: AxisDirection.down, viewportMainAxisExtent: 411.4, remainingCacheExtent: 411.4, cacheOrigin: 0.0)
...  geometry: SliverGeometry(scrollExtent: Infinity, paintExtent: 411.4, maxPaintExtent: Infinity, hasVisualOverflow: true, cacheExtent: 411.4)
...    scrollExtent: Infinity
...    paintExtent: 411.4
...    maxPaintExtent: Infinity
...    hasVisualOverflow: true
...    cacheExtent: 411.4
...  currently live children: 0 to 0
RenderObject: RenderSliverFillViewport#d1392 relayoutBoundary=up2
  needs compositing
  parentData: paintOffset=Offset(0.0, 0.0) (can use size)
  constraints: SliverConstraints(AxisDirection.right, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 411.4, crossAxisExtent: 867.4, crossAxisDirection: AxisDirection.down, viewportMainAxisExtent: 411.4, remainingCacheExtent: 411.4, cacheOrigin: 0.0)
  geometry: SliverGeometry(scrollExtent: Infinity, paintExtent: 411.4, maxPaintExtent: Infinity, hasVisualOverflow: true, cacheExtent: 411.4)
    scrollExtent: Infinity
    paintExtent: 411.4
    maxPaintExtent: Infinity
    hasVisualOverflow: true
    cacheExtent: 411.4
  currently live children: 0 to 0
...  child with index 0: RenderIndexedSemantics#d3b9d NEEDS-PAINT
...    needs compositing
...    parentData: index=0; layoutOffset=0.0
...    constraints: BoxConstraints(w=411.4, h=867.4)
...    size: MISSING
...    index: 0
...    child: RenderRepaintBoundary#56928 NEEDS-PAINT
...      needs compositing
...      parentData: <none> (can use size)
...      constraints: BoxConstraints(w=411.4, h=867.4)
...      size: MISSING
...      usefulness ratio: no metrics collected yet (never painted)
...      child: RenderFlex#b805c NEEDS-PAINT
...        needs compositing
...        parentData: <none> (can use size)
...        constraints: BoxConstraints(w=411.4, h=867.4)
...        size: MISSING
...        direction: horizontal
...        mainAxisAlignment: start
...        mainAxisSize: max
...        crossAxisAlignment: center
...        textDirection: ltr
...        verticalDirection: down
...        child 1: RenderRepaintBoundary#31f83 relayoutBoundary=up1 NEEDS-PAINT
...          needs compositing
...          parentData: offset=Offset(0.0, 0.0); flex=null; fit=null (can use size)
...          constraints: BoxConstraints(0.0<=w<=Infinity, 0.0<=h<=867.4)
...          size: MISSING
...          usefulness ratio: no metrics collected yet (never painted)
...        child 2: RenderRepaintBoundary#3a7da NEEDS-LAYOUT NEEDS-PAINT
...          needs compositing
...          parentData: offset=Offset(0.0, 0.0); flex=null; fit=null
...          constraints: MISSING
...          size: MISSING
...          usefulness ratio: no metrics collected yet (never painted)
====================================================================================================

Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) => const MaterialApp(
    home: Home(),
  );
}

class Home extends StatelessWidget {
  const Home({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: PageView.builder(
        itemBuilder: (context, index) {
          return Row(
            children: [
              ListView(
                children: List.generate(50, (index) => Text("Index $index")),
              ),
              ListView(
                children: List.generate(50, (index) => Text("Index $index")),
              ),
            ],
          );
        },
      ),
    );
  }
}
Logs
C:\Users\Laslo>cd Development\test_project
C:\Users\Laslo\Development\test_project>flutter analyze                                                                 Analyzing test_project...
No issues found! (ran in 3.8s) 
C:\Users\Laslo\Development\test_project>
C:\Users\Laslo\Development\test_project>flutter doctor -v                                                               
[√] Flutter (Channel stable, 3.3.3, on Microsoft Windows [Version 10.0.19043.2075], locale de-DE)                           
• Flutter version 3.3.3 on channel stable at C:\Users\Laslo\flutter                                                     
• Upstream repository https://github.com/flutter/flutter.git                                                            
• Framework revision 18a827f393 (7 days ago), 2022-09-28 10:03:14 -0700                                                 
• Engine revision 5c984c26eb                                                                                            
• Dart version 2.18.2                                                                                                   
• DevTools version 2.15.0                                                                                                                                                                                                                   
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)                                            
• Android SDK at C:\Users\Laslo\AppData\Local\Android\sdk                                                               
X cmdline-tools component is missing                                                                                      
Run `path/to/sdkmanager --install "cmdline-tools;latest"`                                                               
See https://developer.android.com/studio/command-line for more details.                                               
X Android license status unknown.                                                                                         
Run `flutter doctor --android-licenses` to accept the SDK licenses.                                                     
See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.                                                                                                                                                  [√] Chrome - develop for the web                                                                                            
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe                                                                                                                                                                           [X] Visual Studio - develop for Windows                                                                                     
X Visual Studio not installed; this is necessary for Windows development.                                                 
Download at https://visualstudio.microsoft.com/downloads/.                                                              
Please install the "Desktop development with C++" workload, including all of its default components                                                                                                                                       [√] Android Studio (version 2021.3)                                                                                         
• Android Studio at C:\Users\Laslo\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\213.7172.25.2113.9014738     • Flutter plugin version 70.2.3                                                                                         
• Dart plugin version 213.7433                                                                                          
• Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)                                                                                                                                                               
[√] IntelliJ IDEA Ultimate Edition (version 2022.2)                                                                         
• IntelliJ at C:\Users\Laslo\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\222.4167.29                               
• Flutter plugin version 70.2.5                                                                                         
• Dart plugin version 222.4167.21                                                                                                                                                                                                           
[√] Connected device (4 available)                                                                                          
• sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64    • Android 13 (API 33) (emulator)                        
• Windows (desktop)            
• windows       
• windows-x64    
• Microsoft Windows [Version 10.0.19043.2075]           
• Chrome (web)                 
• chrome       
 • web-javascript 
• Google Chrome 105.0.5195.127                          
• Edge (web)                  
• edge          
• web-javascript 
• Microsoft Edge 105.0.1343.53                                                                                                                                              [√] 
HTTP Host Availability                                                                                                  
• All required HTTP hosts are available                                                                                                                                                                                                     
! Doctor found issues in 2 categories.                                                                                                                                                                                                          
C:\Users\Laslo\Development\test_project>  

Metadata

Metadata

Assignees

No one assigned

    Labels

    r: invalidIssue is closed as not valid

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions