Performance Textfield控制器方法使性能降低

Performance Textfield控制器方法使性能降低,performance,gridview,dart,flutter,onchange,Performance,Gridview,Dart,Flutter,Onchange,我正在筛选我的GridView.builder列表,如下所示: onSearchTextChanged(String text) async { if (text.isEmpty) { _searchList = _productList.toList(); setState(() { }); return; } _searchList = _productList.where((product) => product.name.toLowerCase().conta

我正在筛选我的GridView.builder列表,如下所示:

onSearchTextChanged(String text) async {

if (text.isEmpty) {
  _searchList = _productList.toList();
  setState(() {
  });
  return;
}


_searchList = _productList.where((product) => product.name.toLowerCase().contains(text.toLowerCase()) ||
    product.type.toLowerCase().contains(text.toLowerCase())).toList();

setState(() {});
}

但是,当我在文本字段上键入时,性能会下降,有时当我删除文本或快速键入时,性能会下降到2.5 fps

这是我的Gridview生成器

GridView.builder(
        primary: false,
        shrinkWrap: true,
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 2,
          childAspectRatio: itemWidth / itemHeight,
        ),
        itemCount: _searchList.length,
        itemBuilder: (BuildContext context, int index) {
          return _searchList[index];
        }));

始终在setState()调用中设置状态变量

使onSearchTextChanged()函数保存搜索文本,并启动一个Future.delayed()函数,该函数在短时间延迟后执行搜索和更新。请参阅:


您可以使用数据结构来加速搜索操作。不幸的是,我找不到用达特朗写的。你可以编一个。该包不合适,因为它只支持设置功能,不支持映射功能。

始终在setState()调用中设置状态变量

使onSearchTextChanged()函数保存搜索文本,并启动一个Future.delayed()函数,该函数在短时间延迟后执行搜索和更新。请参阅:

您可以使用数据结构来加速搜索操作。不幸的是,我找不到用达特朗写的。你可以编一个。该软件包不适合,因为它只支持设置功能,不支持映射功能