Skip to content

SliverGrid throws assertion while screen is locked #130069

Closed

Description

@Bungeefan

Is there an existing issue for this?

Steps to reproduce

I am sorry if this was already reported somewhere, I couldn't find a similar issue nor was it already fixed on master.

  1. Lock your device (e.g. Press power button)
  2. Run and deploy the attached code without unlocking your device!
  3. A few seconds after launching, you should be able to observe the 'crossAxisExtent > 0.0': is not true assertion in the console

This only happens on the first build, where every element still has 0 height and 0 width.
As long as the screen is locked, Hot Reload and Hot Restart are producing the same assertion again.
But as soon as the screen was unlocked once, there are no more any assertions happening, even when re-locking the device and using Hot Restart.

This was tested with the latest stable and latest master (Flutter 3.12.0-14.0.pre.48) on a Xiaomi device and a Pixel 4 emulator.

Expected results

SliverGrid should probably not assert while running fine with the screen unlocked.

Actual results

SliverGrid asserts with 'crossAxisExtent > 0.0': is not true while the screen is locked.

Code sample

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("'crossAxisExtent > 0.0' Demo")),
      body: CustomScrollView(
        slivers: [
          SliverGrid(
            gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
              maxCrossAxisExtent: 200, // any number should work.
            ),
            delegate: SliverChildBuilderDelegate(
              childCount: 3, // again arbitrary number.
              (context, index) => const Placeholder(),
            ),
          ),
        ],
      ),
    );
  }
}

Logs

Logs
======== Exception caught by rendering library =====================================================
The following assertion was thrown during performLayout():
'package:flutter/src/rendering/sliver_grid.dart': Failed assertion: line 456 pos 12: 'crossAxisExtent > 0.0': 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.yml

The relevant error-causing widget was: 
  SliverGrid SliverGrid:file:///mnt/Daten/entwicklung/bug/lib/sliver_grid_extent.dart:32:11
When the exception was thrown, this was the stack: 
#2      SliverGridDelegateWithMaxCrossAxisExtent._debugAssertIsValid (package:flutter/src/rendering/sliver_grid.dart:456:12)
#3      SliverGridDelegateWithMaxCrossAxisExtent.getLayout (package:flutter/src/rendering/sliver_grid.dart:466:12)
#4      RenderSliverGrid.performLayout (package:flutter/src/rendering/sliver_grid.dart:572:51)
#5      RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#6      RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:534:13)
#7      RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1512:12)
#8      RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1421:20)
#9      RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#10     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#11     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#12     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#13     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#14     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#15     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#16     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#17     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#18     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#19     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#20     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#21     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#22     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#23     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#24     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#25     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#26     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#27     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#28     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#29     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#30     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#31     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#32     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#33     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1431:11)
#34     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#35     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#36     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:173:12)
#37     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1056:7)
#38     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:237:7)
#39     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:405:14)
#40     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#41     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#42     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#43     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#44     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#45     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#46     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1431:11)
#47     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#48     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#49     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#50     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#51     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#52     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#53     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#54     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#55     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#56     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#57     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#58     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#59     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#60     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#61     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#62     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#63     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#64     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#65     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#66     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#67     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#68     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#69     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#70     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#71     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#72     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#73     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#74     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#75     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#76     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#77     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3732:13)
#78     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#79     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#80     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#81     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#82     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#83     _RenderTheaterMixin.performLayout (package:flutter/src/widgets/overlay.dart:838:15)
#84     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#85     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#86     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#87     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#88     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#89     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#90     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#91     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#92     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#93     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#94     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#95     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#96     RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:554:11)
#97     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#98     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#99     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#100    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#101    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#102    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#103    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#104    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#105    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#106    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#107    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#108    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#109    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#110    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#111    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#112    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#113    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#114    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#115    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#116    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#117    RenderView.performLayout (package:flutter/src/rendering/view.dart:178:14)
#118    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2332:7)
#119    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1013:18)
#120    RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:494:19)
#121    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:918:13)
#122    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:360:5)
#123    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
#124    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1227:9)
#125    SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:952:7)
#129    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:189:12)
(elided 5 frames from class _AssertionError, class _Timer, and dart:async-patch)
The following RenderObject was being processed when the exception was fired: RenderSliverGrid#512e3 relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT
...  parentData: paintOffset=Offset(0.0, 0.0) (can use size)
...  constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 0.0, crossAxisExtent: 0.0, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 0.0, remainingCacheExtent: 250.0, cacheOrigin: 0.0)
...  geometry: null
...  no children current live
RenderObject: RenderSliverGrid#512e3 relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT
  parentData: paintOffset=Offset(0.0, 0.0) (can use size)
  constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 0.0, crossAxisExtent: 0.0, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 0.0, remainingCacheExtent: 250.0, cacheOrigin: 0.0)
  geometry: null
  no children current live
====================================================================================================

======== Exception caught by rendering library =====================================================
The following _TypeError was thrown during performLayout():
Null check operator used on a null value

The relevant error-causing widget was: 
  CustomScrollView CustomScrollView:file:///mnt/Daten/entwicklung/bug/lib/sliver_grid_extent.dart:30:13
When the exception was thrown, this was the stack: 
#0      RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:549:64)
#1      RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1512:12)
#2      RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1421:20)
#3      RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#4      RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#5      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#6      RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#7      RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#8      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#9      RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#10     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#11     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#12     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#13     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#14     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#15     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#16     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#17     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#18     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#19     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#20     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#21     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#22     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#23     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#24     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#25     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#26     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#27     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1431:11)
#28     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#29     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#30     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:173:12)
#31     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1056:7)
#32     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:237:7)
#33     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:405:14)
#34     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#35     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#36     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#37     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#38     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#39     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#40     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1431:11)
#41     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#42     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#43     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#44     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#45     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#46     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#47     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#48     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#49     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#50     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#51     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#52     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#53     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#54     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#55     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#56     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#57     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#58     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#59     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#60     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#61     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#62     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#63     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#64     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#65     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#66     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#67     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#68     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#69     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#70     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#71     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3732:13)
#72     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#73     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#74     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#75     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#76     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#77     _RenderTheaterMixin.performLayout (package:flutter/src/widgets/overlay.dart:838:15)
#78     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#79     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#80     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#81     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#82     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#83     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#84     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#85     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#86     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#87     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#88     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#89     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#90     RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:554:11)
#91     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#92     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#93     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#94     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#95     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#96     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#97     RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#98     RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#99     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#100    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#101    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#102    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#103    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#104    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#105    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#106    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#107    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#108    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#109    RenderObject.layout (package:flutter/src/rendering/object.dart:2493:7)
#110    RenderBox.layout (package:flutter/src/rendering/box.dart:2382:11)
#111    RenderView.performLayout (package:flutter/src/rendering/view.dart:178:14)
#112    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2332:7)
#113    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1013:18)
#114    RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:494:19)
#115    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:918:13)
#116    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:360:5)
#117    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
#118    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1227:9)
#119    SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:952:7)
#123    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:189:12)
(elided 3 frames from class _Timer and dart:async-patch)
The following RenderObject was being processed when the exception was fired: RenderViewport#4ba7a NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
...  needs compositing
...  parentData: <none> (can use size)
...  constraints: BoxConstraints(w=0.0, h=0.0)
...  size: Size(0.0, 0.0)
...  axisDirection: down
...  crossAxisDirection: right
...  offset: ScrollPositionWithSingleContext#e3f81(offset: 0.0, range: null..null, viewport: 0.0, ScrollableState, AlwaysScrollableScrollPhysics -> ClampingScrollPhysics -> RangeMaintainingScrollPhysics, IdleScrollActivity#c6818, ScrollDirection.idle)
...  anchor: 0.0
  center child: RenderSliverGrid#512e3 relayoutBoundary=up1 NEEDS-PAINT
    parentData: paintOffset=Offset(0.0, 0.0) (can use size)
    constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 0.0, crossAxisExtent: 0.0, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 0.0, remainingCacheExtent: 250.0, cacheOrigin: 0.0)
    geometry: null
    no children current live
RenderObject: RenderViewport#4ba7a NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
  needs compositing
  parentData: <none> (can use size)
  constraints: BoxConstraints(w=0.0, h=0.0)
  size: Size(0.0, 0.0)
  axisDirection: down
  crossAxisDirection: right
  offset: ScrollPositionWithSingleContext#e3f81(offset: 0.0, range: null..null, viewport: 0.0, ScrollableState, AlwaysScrollableScrollPhysics -> ClampingScrollPhysics -> RangeMaintainingScrollPhysics, IdleScrollActivity#c6818, ScrollDirection.idle)
  anchor: 0.0
  center child: RenderSliverGrid#512e3 relayoutBoundary=up1 NEEDS-PAINT
    parentData: paintOffset=Offset(0.0, 0.0) (can use size)
    constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 0.0, crossAxisExtent: 0.0, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 0.0, remainingCacheExtent: 250.0, cacheOrigin: 0.0)
    geometry: null
    no children current live
====================================================================================================

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.10.5, on Manjaro Linux 6.3.5-2-MANJARO, locale de_AT.UTF-8)
    • Flutter version 3.10.5 on channel stable at /home/<user>/tools/flutter/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 796c8ef792 (vor 3 Wochen), 2023-06-13 15:51:02 -0700
    • Engine revision 45f6e00911
    • Dart version 3.0.5
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /mnt/Daten/tools/Android/Sdk
    • Platform android-33-ext5, build-tools 33.0.2
    • Java binary at: /home/<user>/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-1/223.8836.35.2231.10320515/jbr/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = /usr/bin/chromium

[✗] Linux toolchain - develop for Linux desktop
    • clang version 15.0.7
    ✗ CMake is required for Linux development.
      It is likely available from your distribution (e.g.: apt install cmake), or can be downloaded from https://cmake.org/download/
    ✗ ninja is required for Linux development.
      It is likely available from your distribution (e.g.: apt install ninja-build), or can be downloaded from https://github.com/ninja-build/ninja/releases
    • pkg-config version 1.8.1

[✓] Android Studio (version 2022.3)
    • Android Studio at /home/<user>/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-1/223.8836.35.2231.10320515
    • Flutter plugin version 74.0.3
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] Connected device (5 available)
    • SM T500 (mobile)             • R9AR800H8RK      • android-arm64  • Android 12 (API 31)
    • M2103K19PG (mobile)          • xwcm955djrrslnpj • android-arm64  • Android 13 (API 33)
    • sdk gphone64 x86 64 (mobile) • emulator-5554    • android-x64    • Android 13 (API 33) (emulator)
    • Linux (desktop)              • linux            • linux-x64      • Manjaro Linux 6.3.5-2-MANJARO
    • Chrome (web)                 • chrome           • web-javascript • Chromium 114.0.5735.198 Arch Linux

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

Activity

  1. danagbemava-nc commented on Jul 6, 2023

    @danagbemava-nc
    Member

    Hi @Bungeefan, I attempted to reproduce this using the steps outlined above but I cannot seem to reproduce the bug. I tested on a Pixel 7 and a Nokia 6 on the stable channel.

    Does this happen with every new app that you create?

  2. added
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    on Jul 6, 2023
  3. Bungeefan commented on Jul 6, 2023

    @Bungeefan
    ContributorAuthor

    @danagbemava-nc
    Yes, on every app that has as its initial screen a SilverGrid.
    Did you test this while leaving your device locked?

  4. removed
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    on Jul 6, 2023
  5. navaronbracke commented on Jul 7, 2023

    @navaronbracke
    Contributor

    @Bungeefan Maybe related to the assertion, but a while back I had an eerily similar issue:

    I was running a Flutter Web application, where I had a button to switch the fullscreen. (using the requestFullscreen() DOM API from dart:html)
    This app also had a SliverGrid on the first page of the application.

    I observed a similar assertion failure when switching to fullscreen when the app ran on an external monitor.
    The strange thing was that this happened only on a specific type of external monitor and that the app itself seemed to work fine regardless.

    I believe that this is another case of the display reporting (0,0) as the initial display size (in my case during the switch to fullscreen).

    I'll see if I can reproduce that bug and provide visual evidence.
    Unless I should make a different issue and link back to this one? WDYT @danagbemava-nc ?

  6. danagbemava-nc commented on Jul 7, 2023

    @danagbemava-nc
    Member

    @navaronbracke, I have been able to reproduce it, so I don't think this might be necessary. But just in case we may need to account for another scenario, I would suggest you do so and link back to this one.

    @Bungeefan, yes, I tested with the phone locked throughout but it didn't reproduce yesterday for some reason. I tried again today and it did reproduce. Although, on my pixel 7, it's just stuck at ✓ Built build/app/outputs/flutter-apk/app-debug.apk.

    Reproducible on both stable & master using the code sample & steps provided in the original post. Aside from locking the device, ensure the screen is off.

    flutter doctor -v
    [!] Flutter (Channel stable, 3.10.5, on macOS 13.4.1 22F82 darwin-arm64, locale en-GB)
        • Flutter version 3.10.5 on channel stable at /Users/nexus/dev/sdks/flutter
        ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
        ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 796c8ef792 (3 weeks ago), 2023-06-13 15:51:02 -0700
        • Engine revision 45f6e00911
        • Dart version 3.0.5
        • DevTools version 2.23.1
        • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
        • Android SDK at /Users/nexus/Library/Android/sdk
        • Platform android-33, build-tools 33.0.0
        • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9971841/Android Studio.app/Contents/jbr/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.3)
        • Xcode at /Applications/Xcode-14.3.0.app/Contents/Developer
        • Build 14E222b
        • CocoaPods version 1.12.1
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2022.2)
        • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9971841/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    
    [✓] Android Studio (version 2022.2)
        • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.10121639/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.3)
        • IntelliJ at /Users/nexus/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
        • Flutter plugin version 74.0.4
        • Dart plugin version 231.9161.14
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.2)
        • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.9011.34/IntelliJ IDEA.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.3)
        • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.9161.38/IntelliJ IDEA.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] VS Code (version 1.80.0)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.68.0
    
    [✓] Connected device (4 available)
        • Pixel 7 (mobile) • 28291FDH2001SA   • android-arm64  • Android 13 (API 33)
        • TA 1021 (mobile) • PLEGAR1790423460 • android-arm64  • Android 9 (API 28)
        • macOS (desktop)  • macos            • darwin-arm64   • macOS 13.4.1 22F82 darwin-arm64
        • Chrome (web)     • chrome           • web-javascript • Google Chrome 114.0.5735.198
    
    [✓] Network resources
        • All expected network resources are available.
    
    ! Doctor found issues in 1 category.
    
    [✓] Flutter (Channel master, 3.12.0-15.0.pre.29, on macOS 13.4.1 22F82 darwin-arm64, locale en-GB)
        • Flutter version 3.12.0-15.0.pre.29 on channel master at /Users/nexus/dev/sdks/flutters
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision ce9a604a3b (2 hours ago), 2023-07-07 01:18:04 -0400
        • Engine revision 8aa2e6516a
        • Dart version 3.1.0 (build 3.1.0-262.0.dev)
        • DevTools version 2.25.0
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
        • Android SDK at /Users/nexus/Library/Android/sdk
        • Platform android-33, build-tools 33.0.0
        • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9971841/Android Studio.app/Contents/jbr/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.3)
        • Xcode at /Applications/Xcode-14.3.0.app/Contents/Developer
        • Build 14E222b
        • CocoaPods version 1.12.1
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2022.2)
        • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9971841/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    
    [✓] Android Studio (version 2022.2)
        • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.10121639/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.3)
        • IntelliJ at /Users/nexus/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
        • Flutter plugin version 74.0.4
        • Dart plugin version 231.9161.14
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.2)
        • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.9011.34/IntelliJ IDEA.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.3)
        • IntelliJ at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.9161.38/IntelliJ IDEA.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] VS Code (version 1.80.0)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.68.0
    
    [✓] Connected device (4 available)
        • Pixel 7 (mobile) • 28291FDH2001SA   • android-arm64  • Android 13 (API 33)
        • TA 1021 (mobile) • PLEGAR1790423460 • android-arm64  • Android 9 (API 28)
        • macOS (desktop)  • macos            • darwin-arm64   • macOS 13.4.1 22F82 darwin-arm64
        • Chrome (web)     • chrome           • web-javascript • Google Chrome 114.0.5735.198
    
    [✓] Network resources
        • All expected network resources are available.
    
    • No issues found!
    
  7. added
    frameworkflutter/packages/flutter repository. See also f: labels.
    f: scrollingViewports, list views, slivers, etc.
    a: error messageError messages from the Flutter framework
    has reproducible stepsThe issue has been confirmed reproducible and is ready to work on
    and removed
    in triagePresently being triaged by the triage team
    on Jul 7, 2023
  8. navaronbracke commented on Jul 10, 2023

    @navaronbracke
    Contributor

    @danagbemava-nc I just had a look and it seems that the bug I mentioned does not occur on the latest master anymore. I do get the crossAxisExtent reported properly when switching to and from fullscreen. (could have been an old bug that has since been fixed)

  9. added
    P2Important issues not at the top of the work list
    on Jul 10, 2023
  10. added a commit that references this issue on Nov 6, 2026
    c0921ab
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work lista: error messageError messages from the Flutter frameworkf: scrollingViewports, list views, slivers, etc.found in release: 3.10Found to occur in 3.10found in release: 3.12Found to occur in 3.12frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onteam-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions