Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 优化listview中每个项中的多个http调用_Performance_Flutter_Dart - Fatal编程技术网

Performance 优化listview中每个项中的多个http调用

Performance 优化listview中每个项中的多个http调用,performance,flutter,dart,Performance,Flutter,Dart,我在flatter中有一个无限的listview,该列表中的每个项目都需要进行http调用以从服务器获取一些数据。我想在用户滚动时优化调用我想阻止项目进行http调用。 要想让它成为大多数移动应用程序使用的伟大解决方案,任何想法都是根据滚动条获取你的手机。最初,您可以加载例如20个单元格,当用户到达列表末尾时,再进行一次调用以加载20个以上的单元格。 您可以这样处理用户的滚动: var scrollController = ScrollController(); scrollController

我在flatter中有一个无限的listview,该列表中的每个项目都需要进行http调用以从服务器获取一些数据。我想在用户滚动时优化调用我想阻止项目进行http调用。
要想让它成为大多数移动应用程序使用的伟大解决方案,任何想法都是根据滚动条获取你的手机。最初,您可以加载例如20个单元格,当用户到达列表末尾时,再进行一次调用以加载20个以上的单元格。 您可以这样处理用户的滚动:

var scrollController = ScrollController();
scrollController.addListener(scrollListener);

double maxScroll = listScrollController.position.maxScrollExtent;
double currentScroll = listScrollController.position.pixels;
if (maxScroll == currentScroll) {
   // fetch more cells
}

优化的两种方法可以是:

  • ListView.builder():使用生成器惰性地构造项。这可以用来避免在开始时进行大量http调用(项目构建为用户滚动)
  • 缓存:根据需要缓存http调用的持续时间

  • 我找到了解决我问题的简单方法。 我使用了库可见性检测器()
    在每个项目中,我等待2秒钟,如果项目仍然可见,我进行http调用,如果没有,我什么也不做,但已经使用生成器并将数据存储在数据库中,他们希望我在滚动列表时避免调用,当用户停止滚动时,项目进行httpcall@Lioneldali,告诉我我是不是对了,当用户停止滚动时说
    ,item make http call
    你的意思是说你只想对那些已经滚动并且在列表中当前可见的项目进行http调用?@Lioneldali,在这种情况下,我的另一个可能就是你想要的,我已经用它来获取数据了,但问题是我想对每个项目进行http调用以获取其他数据。你能给我一个你真正想要做的例子吗?我有一个包含每个项目的文章列表,它们将通过调用http来获得提升,只有在列表没有滚动