Skip to content

SliverGrid with zero childCount throws The "scrollExtent" is negative. #59663

Closed

Description

@ammarhemani

Code to Reproduce

GridView.builder(
        shrinkWrap: true,
        physics: NeverScrollableScrollPhysics(),
        padding: EdgeInsets.only(top: 15),
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 1,
          mainAxisSpacing: 10,
          childAspectRatio: 2.1,
        ),
        itemCount: 0,
        itemBuilder: (context, index) {
          return getWidget(index);
        })

The itemCount parameter is, of course, dynamic, and in the rare situation that its set to 0, and the mainAxisSpacing is also defined, it throws an exception.

The exception doesn't occur if I remove the mainAxisSpacing value, OR if I increase the itemCount to something greater than 0.

Exception:

flutter: The following assertion was thrown during performLayout():
flutter: SliverGeometry is not valid: The "scrollExtent" is negative.
flutter: The RenderSliver that returned the offending geometry was: RenderSliverGrid#fe95d relayoutBoundary=up14 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE:
flutter:   creator: SliverGrid ← SliverPadding ← ShrinkWrappingViewport ← IgnorePointer-[GlobalKey#fd570] ←
flutter:     Semantics ← _PointerListener ← Listener ← _GestureSemantics ←
flutter:     RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#af9cf] ← _PointerListener ← Listener
flutter:     ← _ScrollableScope ← ⋯
flutter:   parentData: paintOffset=Offset(0.0, 15.0) (can use size)
flutter:   constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle,
flutter:     scrollOffset: 0.0, remainingPaintExtent: Infinity, crossAxisExtent: 384.0, crossAxisDirection:
flutter:     AxisDirection.right, viewportMainAxisExtent: Infinity, remainingCacheExtent: Infinity,
flutter:     cacheOrigin: 0.0)
flutter:   geometry: SliverGeometry(scrollExtent: -10.0, hidden, maxPaintExtent: -10.0)
flutter:   no children current live
flutter:
flutter: The relevant error-causing widget was:
flutter:   GridView

Side note: The widget tree looks like this: CustomScrollView -> SliverList -> Column -> GridView.builder

Flutter (Channel master, 1.18.0-10.0.pre)
Dart version 2.9.0 (build 2.9.0-3.0.dev a69cb6d700)

Activity

  1. iapicca commented on Jun 17, 2020

    @iapicca

    Hi @ammarhemani
    testing the code below with the latest master

    code sample
    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      const MyApp({Key key}) : super(key: key);
      static const Widget _home = MyHomePage();
      @override
      Widget build(BuildContext context)  => MaterialApp(
        home: _home,
      );
    }
    
    class MyHomePage extends StatelessWidget {
      const MyHomePage({Key key}) : super(key: key);
      @override
      Widget build(BuildContext context) => Material(
        child:GridView.builder(
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 1,
            mainAxisSpacing: 10,
          ),
          itemCount: 0, 
          itemBuilder: (context, index) => const FlutterLogo(size: 80),
        ),
      );
    }
    logs
    [  +11 ms] ✓ Built build/app/outputs/flutter-apk/app-debug.apk.
    [  +10 ms] executing: /Users/nevercode/Library/Android/sdk/build-tools/29.0.2/aapt dump xmltree /Users/nevercode/Desktop/projects/master/build/app/outputs/flutter-apk/app.apk
    AndroidManifest.xml
    [  +29 ms] Exit code 0 from: /Users/nevercode/Library/Android/sdk/build-tools/29.0.2/aapt dump xmltree
    /Users/nevercode/Desktop/projects/master/build/app/outputs/flutter-apk/app.apk AndroidManifest.xml
    [   +1 ms] N: android=http://schemas.android.com/apk/res/android
                 E: manifest (line=2)
                   A: android:versionCode(0x0101021b)=(type 0x10)0x1
                   A: android:versionName(0x0101021c)="1.0.0" (Raw: "1.0.0")
                   A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1c
                   A: android:compileSdkVersionCodename(0x01010573)="9" (Raw: "9")
                   A: package="com.example.master" (Raw: "com.example.master")
                   A: platformBuildVersionCode=(type 0x10)0x1c
                   A: platformBuildVersionName=(type 0x10)0x9
                   E: uses-sdk (line=7)
                     A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
                     A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1c
                   E: uses-permission (line=14)
                     A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
                   E: application (line=22)
                     A: android:label(0x01010001)="master" (Raw: "master")
                     A: android:icon(0x01010002)=@0x7f080000
                     A: android:name(0x01010003)="io.flutter.app.FlutterApplication" (Raw: "io.flutter.app.FlutterApplication")
                     A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
                     A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
                     E: activity (line=28)
                       A: android:theme(0x01010000)=@0x7f0a0000
                       A: android:name(0x01010003)="com.example.master.MainActivity" (Raw: "com.example.master.MainActivity")
                       A: android:launchMode(0x0101001d)=(type 0x10)0x1
                       A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
                       A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
                       A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
                       E: meta-data (line=42)
                         A: android:name(0x01010003)="io.flutter.embedding.android.NormalTheme" (Raw: "io.flutter.embedding.android.NormalTheme")
                         A: android:resource(0x01010025)=@0x7f0a0001
                       E: meta-data (line=52)
                         A: android:name(0x01010003)="io.flutter.embedding.android.SplashScreenDrawable" (Raw: "io.flutter.embedding.android.SplashScreenDrawable")
                         A: android:resource(0x01010025)=@0x7f040000
                       E: intent-filter (line=56)
                         E: action (line=57)
                           A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
                         E: category (line=59)
                           A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
                     E: meta-data (line=66)
                       A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
                       A: android:value(0x01010024)=(type 0x10)0x2
    [   +3 ms] Stopping app 'app.apk' on Pixel 3a.
    [   +1 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb -s 965AY0WP5C shell am force-stop com.example.master
    [  +98 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb -s 965AY0WP5C shell pm list packages com.example.master
    [  +99 ms] package:com.example.master
    [   +6 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb -s 965AY0WP5C shell cat /data/local/tmp/sky.com.example.master.sha1
    [  +72 ms] f9cb0efaef46ec3349d5aaeaa3034f4ab18ab69e
    [   +2 ms] Installing APK.
    [   +6 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb version
    [   +9 ms] Android Debug Bridge version 1.0.41
               Version 30.0.0-6374843
               Installed as /Users/nevercode/Library/Android/sdk/platform-tools/adb
    [   +1 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb start-server
    [  +11 ms] Installing build/app/outputs/flutter-apk/app.apk...
    [        ] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb -s 965AY0WP5C install -t -r
    /Users/nevercode/Desktop/projects/master/build/app/outputs/flutter-apk/app.apk
    [+4299 ms] Performing Streamed Install
                        Success
    [   +1 ms] Installing build/app/outputs/flutter-apk/app.apk... (completed in 4.3s)
    [   +4 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb -s 965AY0WP5C shell echo -n ec7400ed2f2895753fefaa9d0c01a6abd2096e9a >
    /data/local/tmp/sky.com.example.master.sha1
    [  +45 ms] Pixel 3a startApp
    [   +8 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb -s 965AY0WP5C shell am start -a android.intent.action.RUN -f 0x20000000 --ez
    enable-background-compilation true --ez enable-dart-profiling true --ez enable-checked-mode true --ez verify-entry-points true com.example.master/com.example.master.MainActivity
    [  +92 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.example.master/.MainActivity (has extras) }
    [   +1 ms] Waiting for observatory port to be available...
    [+1141 ms] Observatory URL on device: http://127.0.0.1:42783/SmC0GD2f4Ko=/
    [   +4 ms] executing: /Users/nevercode/Library/Android/sdk/platform-tools/adb -s 965AY0WP5C forward tcp:0 tcp:42783
    [  +20 ms] 58117
    [   +1 ms] Forwarded host port 58117 to device port 42783 for Observatory
    [  +19 ms] Caching compiled dill
    [ +123 ms] Connecting to service protocol: http://127.0.0.1:58117/SmC0GD2f4Ko=/
    [ +485 ms] Successfully connected to service protocol: http://127.0.0.1:58117/SmC0GD2f4Ko=/
    [   +1 ms] Waiting for Pixel 3a to report its views...
    [  +16 ms] Waiting for Pixel 3a to report its views... (completed in 13ms)
    [  +15 ms] DevFS: Creating new filesystem on the device (null)
    [  +34 ms] DevFS: Created new filesystem on the device (file:///data/user/0/com.example.master/code_cache/masterDSDKVX/master/)
    [   +6 ms] Updating assets
    [  +99 ms] Syncing files to device Pixel 3a...
    [   +1 ms] Scanning asset files
    [   +2 ms] <- reset
    [        ] Compiling dart to kernel with 0 updated files
    [   +1 ms] <- recompile package:master/main.dart 22e72b55-de21-4cff-9018-f66ac1054756
    [        ] <- 22e72b55-de21-4cff-9018-f66ac1054756
    [ +121 ms] Updating files
    [ +220 ms] DevFS: Sync finished
    [        ] Syncing files to device Pixel 3a... (completed in 349ms)
    [   +1 ms] Synced 0.9MB.
    [   +2 ms] <- accept
    [   +6 ms] Connected to _flutterView/0x7bb3e72820.
    [   +2 ms] Flutter run key commands.
    [   +2 ms] r Hot reload. 🔥🔥🔥
    [   +1 ms] R Hot restart.
    [        ] h Repeat this help message.
    [        ] d Detach (terminate "flutter run" but leave application running).
    [        ] c Clear the screen
    [        ] q Quit (terminate the application on the device).
    [        ] An Observatory debugger and profiler on Pixel 3a is available at: http://127.0.0.1:58117/SmC0GD2f4Ko=/
    [ +471 ms] I/flutter ( 4943): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
    [        ] I/flutter ( 4943): The following assertion was thrown during performLayout():
    [        ] I/flutter ( 4943): SliverGeometry is not valid: The "scrollExtent" is negative.
    [        ] I/flutter ( 4943): The RenderSliver that returned the offending geometry was: RenderSliverGrid#0a9a2 relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT:
    [   +2 ms] I/flutter ( 4943):   creator: SliverGrid ← MediaQuery ← SliverPadding ← Viewport ← IgnorePointer-[GlobalKey#70bc0] ←
    [        ] I/flutter ( 4943):     Semantics ← _PointerListener ← Listener ← _GestureSemantics ←
    [        ] I/flutter ( 4943):     RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#3cae0] ← _PointerListener ← Listener
    [        ] I/flutter ( 4943):     ← ⋯
    [        ] I/flutter ( 4943):   parentData: paintOffset=Offset(0.0, 0.0) (can use size)
    [        ] I/flutter ( 4943):   constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle,
    [        ] I/flutter ( 4943):     scrollOffset: 0.0, remainingPaintExtent: 735.3, crossAxisExtent: 392.7, crossAxisDirection:
    [        ] I/flutter ( 4943):     AxisDirection.right, viewportMainAxisExtent: 759.3, remainingCacheExtent: 985.3, cacheOrigin: 0.0)
    [        ] I/flutter ( 4943):   geometry: SliverGeometry(scrollExtent: -10.0, hidden, maxPaintExtent: -10.0)
    [        ] I/flutter ( 4943):   no children current live
    [        ] I/flutter ( 4943):
    [        ] I/flutter ( 4943): The relevant error-causing widget was:
    [        ] I/flutter ( 4943):   GridView file:///Users/nevercode/Desktop/projects/master/lib/main.dart:18:20
    [        ] I/flutter ( 4943):
    [        ] I/flutter ( 4943): When the exception was thrown, this was the stack:
    [        ] I/flutter ( 4943): #0      SliverGeometry.debugAssertIsValid.<anonymous closure>.verify (package:flutter/src/rendering/sliver.dart:720:9)
    [        ] I/flutter ( 4943): #1      SliverGeometry.debugAssertIsValid.<anonymous closure> (package:flutter/src/rendering/sliver.dart:729:13)
    [        ] I/flutter ( 4943): #2      SliverGeometry.debugAssertIsValid (package:flutter/src/rendering/sliver.dart:759:6)
    [        ] I/flutter ( 4943): #3      RenderSliver.debugAssertDoesMeetConstraints (package:flutter/src/rendering/sliver.dart:1214:21)
    [        ] I/flutter ( 4943): #4      RenderObject.layout.<anonymous closure> (package:flutter/src/rendering/object.dart:1772:9)
    [        ] I/flutter ( 4943): #5      RenderObject.layout (package:flutter/src/rendering/object.dart:1774:8)
    [        ] I/flutter ( 4943): #6      RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:137:11)
    [        ] I/flutter ( 4943): #7      RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:377:11)
    [        ] I/flutter ( 4943): #8      RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #9      RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:454:13)
    [        ] I/flutter ( 4943): #10     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1445:12)
    [        ] I/flutter ( 4943): #11     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1354:20)
    [        ] I/flutter ( 4943): #12     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #13     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #14     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #15     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #17     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #19     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #21     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #22     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #23     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #24     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #25     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #26     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #27     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #28     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #29     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #31     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #32     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #33     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #34     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1269:11)
    [        ] I/flutter ( 4943): #35     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #36     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #37     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #38     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #39     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #40     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #41     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #42     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #43     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #44     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #45     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #46     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #47     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #48     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #49     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #50     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #51     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3221:13)
    [        ] I/flutter ( 4943): #52     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #53     _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:702:15)
    [        ] I/flutter ( 4943): #54     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #55     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #56     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #57     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #58     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #59     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #60     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #61     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #62     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #63     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #64     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #65     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:13)
    [        ] I/flutter ( 4943): #66     RenderObject.layout (package:flutter/src/rendering/object.dart:1769:7)
    [        ] I/flutter ( 4943): #67     RenderView.performLayout (package:flutter/src/rendering/view.dart:169:13)
    [        ] I/flutter ( 4943): #68     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1632:7)
    [        ] I/flutter ( 4943): #69     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:889:18)
    [        ] I/flutter ( 4943): #70     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:404:19)
    [        ] I/flutter ( 4943): #71     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:867:13)
    [        ] I/flutter ( 4943): #72     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:286:5)
    [        ] I/flutter ( 4943): #73     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1115:15)
    [        ] I/flutter ( 4943): #74     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1054:9)
    [        ] I/flutter ( 4943): #75     SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:863:7)
    [        ] I/flutter ( 4943): (elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
    [        ] I/flutter ( 4943):
    [        ] I/flutter ( 4943): The following RenderObject was being processed when the exception was fired: RenderSliverGrid#0a9a2 relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT:
    [   +1 ms] I/flutter ( 4943):   creator: SliverGrid ← MediaQuery ← SliverPadding ← Viewport ← IgnorePointer-[GlobalKey#70bc0] ←
    [        ] I/flutter ( 4943):     Semantics ← _PointerListener ← Listener ← _GestureSemantics ←
    [        ] I/flutter ( 4943):     RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#3cae0] ← _PointerListener ← Listener
    [        ] I/flutter ( 4943):     ← ⋯
    [        ] I/flutter ( 4943):   parentData: paintOffset=Offset(0.0, 0.0) (can use size)
    [        ] I/flutter ( 4943):   constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle,
    [        ] I/flutter ( 4943):     scrollOffset: 0.0, remainingPaintExtent: 735.3, crossAxisExtent: 392.7, crossAxisDirection:
    [        ] I/flutter ( 4943):     AxisDirection.right, viewportMainAxisExtent: 759.3, remainingCacheExtent: 985.3, cacheOrigin: 0.0)
    [        ] I/flutter ( 4943):   geometry: SliverGeometry(scrollExtent: -10.0, hidden, maxPaintExtent: -10.0)
    [        ] I/flutter ( 4943):   no children current live
    [        ] I/flutter ( 4943): This RenderObject has no descendants.
    [        ] I/flutter ( 4943): ════════════════════════════════════════════════════════════════════════════════════════════════════
    [        ] I/flutter ( 4943): Another exception was thrown: SliverGeometry is not valid: The "maxPaintExtent" is less than the "paintExtent".
    [ +239 ms] I/flutter ( 4943): Another exception was thrown: SliverGeometry is not valid: The "maxPaintExtent" is less than the "paintExtent".
    doctor
    [✓] Flutter (Channel master, 1.20.0-1.0.pre.81, on Mac OS X 10.15.5 19F101, locale en-GB)
        • Flutter version 1.20.0-1.0.pre.81 at /Users/nevercode/development/flutter_master
        • Framework revision e0ed12c73a (10 hours ago), 2020-06-16 16:53:04 -0700
        • Engine revision 965fbbed17
        • Dart version 2.9.0 (build 2.9.0-14.0.dev 2b917f5b6a)
    
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
        • Android SDK at /Users/nevercode/Library/Android/sdk
        • Platform android-29, build-tools 29.0.2
        • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 11.5)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Xcode 11.5, Build version 11E608c
        • CocoaPods version 1.9.0
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 3.6)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin version 45.1.1
        • Dart plugin version 192.7761
        • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    
    [✓] VS Code
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.11.0
    
    [✓] Connected device (4 available)
        • Pixel 3a   • 965AY0WP5C • android-arm64  • Android 10 (API 29)
        • macOS      • macOS      • darwin-x64     • Mac OS X 10.15.5 19F101
        • Web Server • web-server • web-javascript • Flutter Tools
        • Chrome     • chrome     • web-javascript • Google Chrome 83.0.4103.106
    
    • No issues found!

    Thank you

  2. added
    p: material_uimaterial_ui package in flutter/packages
    frameworkflutter/packages/flutter repository. See also f: labels.
    has reproducible stepsThe issue has been confirmed reproducible and is ready to work on
    c: crashStack traces logged to the console
    on Jun 17, 2020
  3. omdxp commented on Jul 21, 2020

    @omdxp

    How can you do it with GridView.count()

  4. jeiea commented on Apr 9, 2021

    @jeiea

    It seems still reproducible with flutter 2.0.4.

  5. sgehrman commented on Aug 20, 2021

    @sgehrman
  6. vietstone-ng commented on Sep 15, 2021

    @vietstone-ng

    I face this currently.

  7. larshei commented on Oct 4, 2021

    @larshei

    Got the same problem as well.

    Crash on empty list except when setting the mainAxisSpacing to 0.

    Widgets: Scaffold(body: GridView.builder(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount))

    Flutter 2.5.2 • channel stable • https://github.com/flutter/flutter.git
    Framework • revision 3595343e20 (4 days ago) • 2021-09-30 12:58:18 -0700
    Engine • revision 6ac856380f
    Tools • Dart 2.14.
    
  8. added
    a: error messageError messages from the Flutter framework
    and removed
    c: crashStack traces logged to the console
    on Nov 30, 2021
  9. TahaTesser commented on Nov 30, 2021

    @TahaTesser
    Contributor

    This actually is an error thrown by SliverGrid when you provided 0 child count. You can reproduce this by just passing 0 to SliverGrid example, which is used GridView here obviously.

    minimal 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) {
        return MaterialApp(
          title: 'Material App',
          theme: ThemeData.dark(),
          home: const Home(),
        );
      }
    }
    
    class Home extends StatelessWidget {
      const Home({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('Material App Bar'),
          ),
          body: Center(
            child: CustomScrollView(
              slivers: [
                SliverGrid(
                  delegate: SliverChildBuilderDelegate(
                    (BuildContext context, int index) {
                      return Container(
                        alignment: Alignment.center,
                        color: Colors.teal[100 * (index % 9)],
                        child: Text('grid item $index'),
                      );
                    },
                    childCount: 0,
                  ),
                  gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 1,
                    mainAxisSpacing: 10,
                    crossAxisSpacing: 10,
                  ),
                )
              ],
            ),
          ),
        );
      }
    }

    Based on my digging, it looks like SliverGrid expects at least 1 child and expect least index 0 is child which is basically having at least 1 child

    if (index < 0 || (childCount != null && index >= childCount!))

    I think this could be documented and changing this condition break whole SliverGrid, which is not something worth breaking

  10. changed the title [-]Gridview.builder with an itemCount of 0 and a mainAxisSpacing value greater than 0, causes an exception. [/-] [+]`SliverGrid` with zero childCount throws `The "scrollExtent" is negative.`[/+] on Nov 30, 2021
  11. added
    d: api docsIssues with https://api.flutter.dev/
    f: scrollingViewports, list views, slivers, etc.
    on Nov 30, 2021
  12. maheshj01 commented on Dec 22, 2022

    @maheshj01
    Member

    Reproduces on stable 3.3 and master 3.7

    logs
    Restarted application in 888ms.
    
    ════════ Exception caught by rendering library ═════════════════════════════════
    The following assertion was thrown during performLayout():
    SliverGeometry is not valid: The "scrollExtent" is negative.
    
    The RenderSliver that returned the offending geometry was: RenderSliverGrid#99589 relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT
    The relevant error-causing widget was
    GridView
    When the exception was thrown, this was the stack
    #0      SliverGeometry.debugAssertIsValid.<anonymous closure>.verify
    #1      SliverGeometry.debugAssertIsValid.<anonymous closure>
    #2      SliverGeometry.debugAssertIsValid
    #3      RenderSliver.debugAssertDoesMeetConstraints
    #4      RenderObject.layout.<anonymous closure>
    #5      RenderObject.layout
    #6      RenderSliverEdgeInsetsPadding.performLayout
    #7      RenderSliverPadding.performLayout
    #8      RenderObject.layout
    #9      RenderViewportBase.layoutChildSequence
    #10     RenderViewport._attemptLayout
    #11     RenderViewport.performLayout
    #12     RenderObject.layout
    #13     RenderBox.layout
    #14     RenderProxyBoxMixin.performLayout
    #15     RenderObject.layout
    #16     RenderBox.layout
    #17     RenderProxyBoxMixin.performLayout
    #18     RenderObject.layout
    #19     RenderBox.layout
    #20     RenderProxyBoxMixin.performLayout
    #21     RenderObject.layout
    #22     RenderBox.layout
    #23     RenderProxyBoxMixin.performLayout
    #24     RenderObject.layout
    #25     RenderBox.layout
    #26     RenderProxyBoxMixin.performLayout
    #27     RenderObject.layout
    #28     RenderBox.layout
    #29     RenderProxyBoxMixin.performLayout
    #30     RenderObject.layout
    #31     RenderBox.layout
    #32     RenderProxyBoxMixin.performLayout
    #33     RenderObject.layout
    #34     RenderBox.layout
    #35     RenderProxyBoxMixin.performLayout
    #36     RenderCustomPaint.performLayout
    #37     RenderObject.layout
    #38     RenderBox.layout
    #39     RenderProxyBoxMixin.performLayout
    #40     RenderObject.layout
    #41     RenderBox.layout
    #42     RenderProxyBoxMixin.performLayout
    #43     RenderObject.layout
    #44     RenderBox.layout
    #45     RenderProxyBoxMixin.performLayout
    #46     _RenderCustomClip.performLayout
    #47     RenderObject.layout
    #48     RenderBox.layout
    #49     RenderProxyBoxMixin.performLayout
    #50     RenderObject.layout
    #51     RenderBox.layout
    #52     RenderProxyBoxMixin.performLayout
    #53     RenderObject.layout
    #54     RenderBox.layout
    #55     RenderProxyBoxMixin.performLayout
    #56     RenderObject.layout
    #57     RenderBox.layout
    #58     RenderProxyBoxMixin.performLayout
    #59     RenderObject.layout
    #60     RenderBox.layout
    #61     RenderProxyBoxMixin.performLayout
    #62     RenderObject.layout
    #63     RenderBox.layout
    #64     RenderProxyBoxMixin.performLayout
    #65     RenderObject.layout
    #66     RenderBox.layout
    #67     RenderProxyBoxMixin.performLayout
    #68     RenderObject.layout
    #69     RenderBox.layout
    #70     RenderProxyBoxMixin.performLayout
    #71     RenderObject.layout
    #72     RenderBox.layout
    #73     RenderProxyBoxMixin.performLayout
    #74     RenderObject.layout
    #75     RenderBox.layout
    #76     RenderProxyBoxMixin.performLayout
    #77     RenderOffstage.performLayout
    #78     RenderObject.layout
    #79     RenderBox.layout
    #80     RenderProxyBoxMixin.performLayout
    #81     RenderObject.layout
    #82     RenderBox.layout
    #83     _RenderTheatre.performLayout
    #84     RenderObject.layout
    #85     RenderBox.layout
    #86     RenderProxyBoxMixin.performLayout
    #87     RenderObject.layout
    #88     RenderBox.layout
    #89     RenderProxyBoxMixin.performLayout
    #90     RenderObject.layout
    #91     RenderBox.layout
    #92     RenderProxyBoxMixin.performLayout
    #93     RenderObject.layout
    #94     RenderBox.layout
    #95     RenderProxyBoxMixin.performLayout
    #96     RenderCustomPaint.performLayout
    #97     RenderObject.layout
    #98     RenderBox.layout
    #99     RenderProxyBoxMixin.performLayout
    #100    RenderObject.layout
    #101    RenderBox.layout
    #102    RenderProxyBoxMixin.performLayout
    #103    RenderObject.layout
    #104    RenderBox.layout
    #105    RenderProxyBoxMixin.performLayout
    #106    RenderObject.layout
    #107    RenderBox.layout
    #108    RenderProxyBoxMixin.performLayout
    #109    RenderObject.layout
    #110    RenderBox.layout
    #111    RenderProxyBoxMixin.performLayout
    #112    RenderObject.layout
    #113    RenderBox.layout
    #114    RenderProxyBoxMixin.performLayout
    #115    RenderObject.layout
    #116    RenderBox.layout
    #117    RenderView.performLayout
    #118    RenderObject._layoutWithoutResize
    #119    PipelineOwner.flushLayout
    #120    RendererBinding.drawFrame
    #121    WidgetsBinding.drawFrame
    #122    RendererBinding._handlePersistentFrameCallback
    #123    SchedulerBinding._invokeFrameCallback
    #124    SchedulerBinding.handleDrawFrame
    #125    SchedulerBinding.scheduleWarmUpFrame.<anonymous closure>
    #129    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:192:26)
    (elided 3 frames from class _Timer and dart:async-patch)
    The following RenderObject was being processed when the exception was fired: RenderSliverGrid#99589 relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT
    RenderObject: RenderSliverGrid#99589 relayoutBoundary=up2 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: 757.1, crossAxisExtent: 392.7, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 781.1, remainingCacheExtent: 1007.1, cacheOrigin: 0.0)
        geometry: SliverGeometry(scrollExtent: -10.0, hidden, maxPaintExtent: -10.0)
            scrollExtent: -10.0
            hidden
            maxPaintExtent: -10.0
        no children current live
    ════════════════════════════════════════════════════════════════════════════════
    
    ════════ Exception caught by rendering library ═════════════════════════════════
    SliverGeometry is not valid: The "maxPaintExtent" is less than the "paintExtent".
    The RenderSliver that returned the offending geometry was: RenderSliverPadding#f5b0f relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
    The relevant error-causing widget was
    GridView
    The following RenderObject was being processed when the exception was fired: RenderSliverPadding#f5b0f relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
    RenderObject: RenderSliverPadding#f5b0f relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
        parentData: paintOffset=Offset(0.0, 0.0) (can use size)
        constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 781.1, crossAxisExtent: 392.7, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 781.1, remainingCacheExtent: 1031.1, cacheOrigin: 0.0)
        geometry: SliverGeometry(scrollExtent: 14.0, paintExtent: 24.0, maxPaintExtent: 14.0, cacheExtent: 24.0)
            scrollExtent: 14.0
            paintExtent: 24.0
            maxPaintExtent: 14.0
            cacheExtent: 24.0
        padding: EdgeInsets(0.0, 24.0, 0.0, 0.0)
        textDirection: ltr
        child: RenderSliverGrid#99589 relayoutBoundary=up2 NEEDS-PAINT
            parentData: paintOffset=Offset(0.0, 24.0) (can use size)
            constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: 0.0, remainingPaintExtent: 757.1, crossAxisExtent: 392.7, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 781.1, remainingCacheExtent: 1007.1, cacheOrigin: 0.0)
            geometry: SliverGeometry(scrollExtent: -10.0, hidden, maxPaintExtent: -10.0)
                scrollExtent: -10.0
                hidden
                maxPaintExtent: -10.0
            no children current live
    ════════════════════════════════════════════════════════════════════════════════
    
    ════════ Exception caught by rendering library ═════════════════════════════════
    SliverGeometry is not valid: The "maxPaintExtent" is less than the "paintExtent".
    The relevant error-causing widget was
    GridView
    ════════════════════════════════════════════════════════════════════════════════
    
    flutter doctor -v (mac)
    [✓] Flutter (Channel master, 3.7.0-3.0.pre.33, on macOS 12.6 21G115 darwin-arm64, locale en-IN)
        • Flutter version 3.7.0-3.0.pre.33 on channel master 
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 5201856805 (38 minutes ago), 2022-12-05 18:27:21 -0800
        • Engine revision a309d239c4
        • Dart version 2.19.0 (build 2.19.0-463.0.dev)
        • DevTools version 2.20.0
        • 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-rc4)
        • Android SDK at /Users/mahesh/Library/Android/sdk
        • Platform android-33, build-tools 33.0.0-rc4
        • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
        • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Build 14A400
        • CocoaPods version 1.11.3
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2021.2)
        • Android Studio at /Applications/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 11.0.12+0-b1504.28-7817840)
    
    [✓] IntelliJ IDEA Community Edition (version 2021.2.1)
        • IntelliJ at /Applications/IntelliJ IDEA CE.app
        • Flutter plugin version 61.2.4
        • Dart plugin version 212.5080.8
    
    [✓] VS Code (version 1.70.2)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.55.20221129
    
    [✓] Connected device (3 available)
        • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
          com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
        • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm64
        • Chrome (web)           • chrome                               • web-javascript • Google Chrome 108.0.5359.94
    
    [✓] HTTP Host Availability
        • All required HTTP hosts are available
    
    • No issues found!
    
    [✓] Flutter (Channel stable, 3.3.9, on macOS 12.6 21G115 darwin-arm, locale en-IN)
        • Flutter version 3.3.9 on channel stable at /Users/mahesh/Development/flutter
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision b8f7f1f986 (24 hours ago), 2022-11-23 06:43:51 +0900
        • Engine revision 8f2221fbef
        • Dart version 2.18.5
        • DevTools version 2.15.0
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
        • Android SDK at /Users/mahesh/Library/Android/sdk
        • Platform android-33, build-tools 33.0.0-rc4
        • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
        • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Build 14A400
        • CocoaPods version 1.11.3
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2021.2)
        • Android Studio at /Applications/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 11.0.12+0-b1504.28-7817840)
    
    [✓] IntelliJ IDEA Community Edition (version 2021.2.1)
        • IntelliJ at /Applications/IntelliJ IDEA CE.app
        • Flutter plugin version 61.2.4
        • Dart plugin version 212.5080.8
    
    [✓] VS Code (version 1.70.2)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.53.20221101
    
    [✓] Connected device (3 available)
        • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
          com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
        • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm
        • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110
    
    [✓] HTTP Host Availability
        • All required HTTP hosts are available
    
    • No issues found!
    
  13. Piyuuussshhh commented on Dec 24, 2022

    @Piyuuussshhh

    FIX: in the itemCount parameter, we can use a ternary expression. If we are passing 0 to it, we can pass 1 instead. Then in the builder function for the itemBuilder parameter, we use an if else block. If itemCount is 0, then we return an empty container, else we return the normal widget.

    return GridView.builder(
          padding: const EdgeInsets.all(10),
          itemCount: products.isEmpty ? 1 : products.length,
          gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 1,
            childAspectRatio: 3 / 2,
            crossAxisSpacing: 20,
            mainAxisSpacing: 20,
          ),
          itemBuilder: (context, index) {
            if (products.isEmpty) {
              return Container(); 
            }
            return ChangeNotifierProvider.value(
              value: products[index], 
              child: const ProductItem(),
            );
          },
        );
    
  14. self-assigned this
    on Mar 21, 2023
  15. added
    P2Important issues not at the top of the work list
    c: crashStack traces logged to the console
    on Mar 21, 2023
  16. github-actions commented on Apr 12, 2023

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  17. locked as resolved and limited conversation to collaborators on Apr 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work lista: error messageError messages from the Flutter frameworkc: crashStack traces logged to the consoled: api docsIssues with https://api.flutter.dev/f: scrollingViewports, list views, slivers, etc.found in release: 3.3Found to occur in 3.3found in release: 3.7Found to occur in 3.7frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: material_uimaterial_ui package in flutter/packages

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions