1

在我的 Flutter 应用程序的这一部分出现一个非常讨厌的错误,不知道为什么:

child: GridView.builder(
    gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 1,
        childAspectRatio: 4 / 3,
        mainAxisSpacing: 30.0,
        crossAxisSpacing: 20.0),
    padding: EdgeInsets.only(left: 20),
    scrollDirection: Axis.horizontal,
    itemCount: products.length,
    itemBuilder: (context, i) => ChangeNotifierProvider.value(
      value: products[i],
      child: Consumer<Product>(
        builder: (context, product, _) {
          return ProductCard(
              product: product,
              onSelected: (prod) {
                setState(() {
                  products.forEach(
                    (item) {
                      item.isSelected = false;
                    },
                  );
                  prod.isSelected = true;
                });
here's the error: SliverGeometry is not valid: The "scrollExtent" is negative.geometry: SliverGeometry(scrollExtent: -10.0, paintExtent: 20.0, maxPaintExtent: -10.0, cacheExtent: 20.0)
scrollExtent: -10.0
paintExtent: 20.0
maxPaintExtent: -10.0
cacheExtent: 20.0

填充:EdgeInsets(20.0, 0.0, 0.0, 0.0)

即使安装了 apk 但它不会运行,此错误也会阻止在 Android 上进行仿真。它在 iOS 上运行,但错误仍然存​​在。 带有产品的主页视图

4

3 回答 3

2

是我的代码导致了相同的异常,异常 之前的异常

我搜索了很多,简而言之,这就是我解决它的方法

我做了什么来解决它

就我而言,更改gridDelegate,我的异常已修复!

注意:不要使用像 (/,*) 这样可能产生双精度值的数学运算!!!

对你有用请点个赞!:)

于 2021-03-23T10:25:46.367 回答
0

我发现了问题,

我在gridview builder中使用了空列表

    List<int> myList = [];

    GridView.builder(
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisSpacing: Dimensions.PADDING_SIZE_LARGE,
        mainAxisSpacing: ResponsiveHelper.isDesktop(context)
            ? Dimensions.PADDING_SIZE_LARGE
            : 0.01,
        childAspectRatio:
            ResponsiveHelper.isDesktop(context) ? 4 : 4,
        crossAxisCount:
            ResponsiveHelper.isMobile(context) ? 1 : 2,
      ),
      physics: BouncingScrollPhysics(),
      shrinkWrap: true,
      itemCount: myList.length,
      itemBuilder: (context, index) {
        return Text("");
      },
    )

myList 没有任何值

于 2022-01-21T18:21:46.447 回答
0

很确定你已经把它整理好了,但由于我没有看到任何可接受的答案,我会留下我的答案,以便对其他人有用。

我处于同样的情况,我遇到了同样的问题,横轴上的面团。问题是您同时提供了mainAxisSpacing: 30.0crossAxisSpacing: 20.0值。使用 acrossAxisCount: 1您没有使用主轴,因此mainAxisSpacing会引发臭名昭著的SliverGeometry is not valid: The "scrollExtent" is negative.错误。独立于你的scrollingDirection你应该只传递crossAxisSpacing价值。

child: GridView.builder(
    gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 1,
        childAspectRatio: 4 / 3,
        crossAxisSpacing: 20.0),
    padding: EdgeInsets.only(left: 20),
    scrollDirection: Axis.horizontal,
    itemCount: products.length,
    itemBuilder: (context, i) => ChangeNotifierProvider.value(
      value: products[i],
      child: Consumer<Product>(
        builder: (context, product, _) {
          return ProductCard(
              product: product,
              onSelected: (prod) {
                setState(() {
                  products.forEach(
                    (item) {
                      item.isSelected = false;
                    },
                  );
                  prod.isSelected = true;
                });
于 2022-02-19T19:00:14.897 回答