在颤振形式的sqlite数据库中,在列表视图中加载7000多个项目的内存有效方法是啥

Posted

技术标签:

【中文标题】在颤振形式的sqlite数据库中,在列表视图中加载7000多个项目的内存有效方法是啥【英文标题】:What is the memory efficient way to load 7000+ items in list view in flutter form sqlite database在颤振形式的sqlite数据库中,在列表视图中加载7000多个项目的内存有效方法是什么 【发布时间】:2020-01-28 14:59:54 【问题描述】:

我是 Flutter 的新手,我创建了一个应用程序,该应用程序将 7000 多个项目预加载到数据库中。我想在列表视图中显示所有这些项目。我目前正在查询数据库一次并将所有内容加载到内存中并使用 ListView 类显示它。

ListView.separated(
 separatorBuilder: (context, int) 
  return Divider(height: 0);
 ,
 controller: scrollController,
 padding: const EdgeInsets.only(top: 5, bottom: 5),
 itemCount: data.length,
 itemBuilder: (context, int position) 
  Map<String, dynamic> value = data[position];
   return ListTile(title: value['value']);
 ,
);

我发现这样做我的列表视图很滞后并且表现不佳。这是正确的方法吗?还是我做对了,但搞砸了其他事情?

【问题讨论】:

不指定itemCount。可以试试吗??无论如何,如果您要在内存中选择 7k+ 个项目,这是主要问题。即使ListView 可以有效地显示,您仍然有 7k+ 项在内存中。我想分页是解决方案就在这里。 DON'T LOAD 7000+ Items,没有人会看那么多项目...去分页视图并在列表视图滚动上查询数据库.. 您的列表视图是否也落后于发布版本?请记住,当您运行应用程序的非发布版本时,它缺乏一些优化和性能改进。因此,请尝试使用发布编译的 apk @mdexp 这就是问题所在。我怎么错过了?谢谢。 我将其发布为答案,以便您可以将问题标记为已解决 【参考方案1】:

您的列表视图是否也落后于发布版本?

请记住,当您运行应用的非发布版本时,它缺少一些优化和性能改进。因此,请尝试使用 release 编译的 apk。

【讨论】:

以上是关于在颤振形式的sqlite数据库中,在列表视图中加载7000多个项目的内存有效方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

Android sqlite数据库-如何在滚动结束时显示列表视图添加 "加载更多项目"。

颤振:如何在不按按钮的情况下进行列表视图更新?

在颤振中使用列表视图搜索数据时出错

如何在颤振/飞镖中缓存列表视图构建器?

带有分隔符的颤振组列表视图

Android:从某个点开始在列表视图上加载项目