Skip to content

mainAxisExtent of SliverGridDelegateWithFixedCrossAxisCount and SliverGridDelegateWithMaxCrossAxisExtent may trigger assert #138871

@hello-coder-xu

Description

@hello-coder-xu

Is there an existing issue for this?

Steps to reproduce

use example : https://github.com/hello-coder-xu/flutter_gridview_delegate
1,flutter run
2,Click SliverGridDelegateWithFixedCrossAxisCount button or SliverGridDelegateWithMaxCrossAxisExtent button to GridViewDelegatePage
3,you can see error log

Expected results

no error log

Actual results

SliverGridDelegateWithMaxCrossAxisExtent and SliverGridDelegateWithFixedCrossAxisCount need to be corrected mainAxisExtent value

Code sample

Code sample
https://github.com/hello-coder-xu/flutter_gridview_delegate.git

Screenshots or Video

Screenshots / Video demonstration image

Logs

Logs
════════ Exception caught by rendering library ═════════════════════════════════
The following assertion was thrown during performLayout():
'package:flutter/src/rendering/sliver_grid.dart': Failed assertion: line 178 pos 15: 'mainAxisStride >= 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:
    GridView GridView:file:///Users/10457/github/flutter_gridview_delegate/lib/gridview_delegate_page.dart:25:22

When the exception was thrown, this was the stack:
#2      new SliverGridRegularTileLayout (package:flutter/src/rendering/sliver_grid.dart:178:15)
#3      SliverGridDelegateWithFixedCrossAxisCount.getLayout (package:flutter/src/rendering/sliver_grid.dart:388:12)
#4      RenderSliverGrid.performLayout (package:flutter/src/rendering/sliver_grid.dart:594:51)
#5      RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#6      RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:139:12)
#7      RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:361:11)
#8      RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#9      RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:601:13)
#10     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1554:12)
#11     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1463:20)
#12     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#13     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#14     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#15     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#16     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#17     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#18     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#19     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#20     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#21     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#22     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#23     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#24     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#25     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#26     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#27     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#28     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#29     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#30     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#31     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#32     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#33     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#34     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#35     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#36     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1434:11)
#37     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#38     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#39     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:173:12)
#40     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1062:7)
#41     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:237:7)
#42     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:403:14)
#43     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#44     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#45     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#46     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#47     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#48     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#49     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1434:11)
#50     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#51     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#52     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#53     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#54     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#55     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#56     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#57     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#58     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#59     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#60     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#61     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#62     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#63     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#64     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#65     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#66     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#67     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#68     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#69     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#70     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#71     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#72     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#73     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#74     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#75     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#76     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#77     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#78     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#79     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3712:14)
#80     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#81     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#82     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:104:21)
#83     RenderObject.layout (package:flutter/src/rendering/object.dart:2546:7)
#84     RenderBox.layout (package:flutter/src/rendering/box.dart:2389:11)
#85     _RenderTheaterMixin.performLayout (package:flutter/src/widgets/overlay.dart:884:15)
#86     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2385:7)
#87     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1025:18)
#88     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1038:15)
#89     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:591:23)
#90     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:986:13)
#91     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:457:5)
#92     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1325:15)
#93     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1255:9)
#94     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1113:5)
#95     _invoke (dart:ui/hooks.dart:312:13)
#96     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:383:5)
#97     _drawFrame (dart:ui/hooks.dart:283:31)
(elided 2 frames from class _AssertionError)

The following RenderObject was being processed when the exception was fired: RenderSliverGrid#fd70a 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: 818.3, crossAxisExtent: 411.4, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 818.3, remainingCacheExtent: 1068.3, cacheOrigin: 0.0)
    geometry: null
    no children current live
RenderObject: RenderSliverGrid#fd70a 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: 818.3, crossAxisExtent: 411.4, crossAxisDirection: AxisDirection.right, viewportMainAxisExtent: 818.3, remainingCacheExtent: 1068.3, cacheOrigin: 0.0)
    geometry: null
    no children current live
════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by rendering library ═════════════════════════════════
Null check operator used on a null value
The relevant error-causing widget was:
The following RenderObject was being processed when the exception was fired: RenderSliverPadding#dc284 relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
RenderObject: RenderSliverPadding#dc284 relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by rendering library ═════════════════════════════════
Null check operator used on a null value
The relevant error-causing widget was:
════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by rendering library ═════════════════════════════════
Null check operator used on a null value
The relevant error-causing widget was:
════════════════════════════════════════════════════════════════════════════════

Flutter Doctor output

Doctor output
flutter_gridview_delegate git:(main) flutter doctor -v
[✓] Flutter (Channel stable, 3.16.0, on macOS 12.5.1 21G83 darwin-arm64, locale zh-Hans-CN)
    • Flutter version 3.16.0 on channel stable at /Users/10457/fvm/versions/stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision db7ef5bf9f (6 days ago), 2023-11-15 11:25:44 -0800
    • Engine revision 74d16627b9
    • Dart version 3.2.0
    • DevTools version 2.28.2

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/10457/AndroidSdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/10457/AndroidSdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14C18
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version unknown)
    • Android Studio at /Applications/Android Studio Preview.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
    ✗ Unable to determine Android Studio version.
    • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1000.46-11084592)

[✓] Android Studio (version 2022.3)
    • 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 17.0.6+0-17.0.6b829.9-10027231)

[✓] VS Code (version 1.84.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.76.0

[✓] Connected device (2 available)
    • ASUS I002D (mobile) • L9AIB76075068EF • android-arm64  • Android 12 (API 31)
    • Chrome (web)        • chrome          • web-javascript • Google Chrome 119.0.6045.159

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

! Doctor found issues in 1 category.flutter_gridview_delegate git:(main) 

Metadata

Metadata

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.16Found to occur in 3.16found in release: 3.17Found to occur in 3.17frameworkflutter/packages/flutter repository. See also f: labels.has partial patchThere is a PR awaiting someone to take it across the finish linehas reproducible stepsThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionteam-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