gpt4 book ai didi

performance - 文本域 Controller 方法使性能下降

转载 作者:IT王子 更新时间:2023-10-29 07:04:07 26 4
gpt4 key购买 nike

我正在像这样过滤我的 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() 以在短时间延迟后执行搜索和更新。请参阅:https://stackoverflow.com/a/54686588/1736338 .

您可以使用 Suffix Tree加快搜索操作的数据结构。不幸的是,我找不到用 Dartlang 写的。你可以编码一个。 trie包不合适,因为它仅支持 Set 功能,不支持 Map 功能。

关于performance - 文本域 Controller 方法使性能下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55110903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com