Repository navigation
SliverGrid with zero childCount throws The "scrollExtent" is negative. #59663
Copy link
Copy link
Closed
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: error messageError messages from the Flutter frameworkError messages from the Flutter frameworkc: crashStack traces logged to the consoleStack traces logged to the consoled: api docsIssues with https://api.flutter.dev/Issues with https://api.flutter.dev/f: scrollingViewports, list views, slivers, etc.Viewports, list views, slivers, etc.found in release: 3.3Found to occur in 3.3Found to occur in 3.3found in release: 3.7Found to occur in 3.7Found to occur in 3.7frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: material_uimaterial_ui package in flutter/packagesmaterial_ui package in flutter/packages
Description
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)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: error messageError messages from the Flutter frameworkError messages from the Flutter frameworkc: crashStack traces logged to the consoleStack traces logged to the consoled: api docsIssues with https://api.flutter.dev/Issues with https://api.flutter.dev/f: scrollingViewports, list views, slivers, etc.Viewports, list views, slivers, etc.found in release: 3.3Found to occur in 3.3Found to occur in 3.3found in release: 3.7Found to occur in 3.7Found to occur in 3.7frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: material_uimaterial_ui package in flutter/packagesmaterial_ui package in flutter/packages
Activity
iapicca commentedon Jun 17, 2020
Hi @ammarhemani
testing the code below with the latest master
code sample
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
Thank you
omdxp commentedon Jul 21, 2020
How can you do it with GridView.count()
jeiea commentedon Apr 9, 2021
It seems still reproducible with flutter 2.0.4.
sgehrman commentedon Aug 20, 2021
vietstone-ng commentedon Sep 15, 2021
I face this currently.
larshei commentedon Oct 4, 2021
Got the same problem as well.
Crash on empty list except when setting the
mainAxisSpacingto 0.Widgets:
Scaffold(body: GridView.builder(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount))TahaTesser commentedon Nov 30, 2021
This actually is an error thrown by SliverGrid when you provided
0child count. You can reproduce this by just passing0to SliverGrid example, which is used GridView here obviously.minimal code sample
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
flutter/packages/flutter/lib/src/widgets/sliver.dart
Line 453 in 361d416
I think this could be documented and changing this condition break whole SliverGrid, which is not something worth breaking
[-]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.`[/+]maheshj01 commentedon Dec 22, 2022
Reproduces on stable 3.3 and master 3.7
logs
flutter doctor -v (mac)
Piyuuussshhh commentedon Dec 24, 2022
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.
github-actions commentedon Apr 12, 2023
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 -vand a minimal reproduction of the issue.