在 IOS 中使用“cacheExtent: double.infinity”时 ListView 出错

Man*_*R S 1 ios flutter flutter-listview flutter-ios

为了提高性能,我在 Listview 中使用了cacheExtent: double.infinity。但在ios中会弹出错误。如何修复此错误以及为什么会出现此错误?

代码 :

ListView.separated(
        cacheExtent: double.infinity,
        padding: EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 8),
        itemCount: 200,
        itemBuilder: (_, index) {
          return _buildItem();
        },
        separatorBuilder: (context, index) {
          return Divider(
            color: AppColors.app_list_divider,
          );
        },
      )
Run Code Online (Sandbox Code Playgroud)

错误 :

扑动:[2022-02-16 16:39:40.239153 | 捕手| 细]错误:''package:flutter/src/semantics/semantics.dart':断言失败:第1592行第12行:'value.isFinite':SemanticsNode#60(Rect.fromLTRB(0.0,0.0,0.0,0.0),标签:[RenderViewport.twoPane],不可见)(为空)尝试设置一个非有限矩形。由于 3000 毫秒内发生重复而被跳过。

小智 5

我今天也遇到了同样的问题。不要使用double.infinity,而是尝试使用double.maxFinite,如下所示:

ListView.separated(
  cacheExtent: double.maxFinite,
  ...
);
Run Code Online (Sandbox Code Playgroud)

根据文档,这是它们背后的值:

static const double nan = 0.0 / 0.0;
static const double infinity = 1.0 / 0.0;
static const double negativeInfinity = -infinity;
static const double minPositive = 5e-324;
static const double maxFinite = 1.7976931348623157e+308;
Run Code Online (Sandbox Code Playgroud)

它对我有用,希望对你有用:)