2

渲染库捕获的异常

The following assertion was thrown during performLayout():
SliverGeometry is not valid: The "scrollExtent" is negative.
The RenderSliver that returned the offending geometry was: RenderSliverGrid#f9778 relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT:
  creator: SliverGrid ← MediaQuery ← SliverPadding ← Viewport ← IgnorePointer-[GlobalKey#15db4] ←
    Semantics ← _PointerListener ← Listener ← _GestureSemantics ←
    RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#30301] ← _PointerListener ← Listener
    ← ⋯
  parentData: paintOffset=Offset(0.0, 0.0) (can use size)
  constraints: SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle,
4

4 回答 4

3

当我将 0 个项目传递给 GridView.builder 时,我发现我收到了“scrollExtent 为负”错误。这是在我的数据加载之前发生的。

在我的构建函数中,我检查项目列表是否为零,如果是,我渲染一个空的 Container() 而不是 Gridview。这阻止了错误的发生。

我相信这是 GridView 的一个错误,因为它应该能够优雅地处理任何记录。

于 2021-10-29T06:48:02.957 回答
0

不确定您的代码是什么样的,但我在 GridView.builder 上使用了 NotificationListener。

清除 Gridview 的内容时出现此错误。(在我的代码中,我有一个搜索过滤器,它会在保存时清除搜索结果,然后调用搜索函数)。一旦我添加了一个简单的标志来显示加载过程中的进度以及如果结果为 0 的消息,错误就消失了。

于 2021-06-28T04:19:47.427 回答
0

这里有一个相关的问题。仍然没有解决。

ScrollExtent 在颤动中为负

顺便说一句,你可以在 Github 上查看。

https://github.com/flutter/flutter/issues/39963

并重现错误: https ://dartpad.dev/2630a061cf2632a1ffd6fb6c13c94e4c

于 2020-09-29T14:18:36.787 回答
-1

对我来说,这是导致异常的旧代码:旧代码

然后我开始搜索并尝试了一些更改。那时我发现 gridDelegate导致了异常。

然后经过一些更改:新代码

我得到了我的异常修复。

注意:不要使用像 (/,*) 这样可能产生双精度值的数学运算!!! 我希望这对你有帮助

于 2021-03-23T12:12:24.560 回答