Flutter List + Pull加载更多数据时未等待数据加载完毕才导致列表/滚动变得不稳定

时间:2019-04-15 20:08:20

标签: dart flutter

如果您创建一个新的Flutter项目并包含依赖项,然后替换您的main.dart文件,那么您应该是我在此问题上的位置。


我离开了原来的负载:带有Future.delayed,但这似乎并不重要。我部分地知道我的问题是什么,但无法提出更好的解决方案。

1)我似乎并没有使用我的snapshot.data,而是使用str制作了一个空列表,然后将allAll添加到其中并使用了它。因此,我不想这样做,我最初使用的是snapshot.data,但是当我尝试“拉动加载更多数据”时遇到了问题,这种情况发生在您滚动到列表底部时。

我当前执行此操作的方法的问题是,如果您拉动加载更多用户,然后在用户加载之前尝试再次拉动,则应用程序会中断并且不会等待数据以正确加载。我相信我需要在该库load:的{​​{1}}中进行所有操作,但是我不确定如何重写代码来实现这一目标。

如何使我的数据通过snapshot.data加载,然后在刷新时向该列表追加100个用户,但是UI等待列表更新,然后再完成加载。在str列表更新后,放一个Blocking UI元素会更好吗?当加载新用户时,我会取消阻止用户界面吗?哪种感觉有点黑而不是解决这个问题的正确方法。插件本身应该能够执行加载,并在其准备就绪时将其停在列表下的微调框并显示“完成”。

pubspec.yaml

easy_refresh

main.dart

dependencies:
flutter:
  sdk: flutter

flutter_easyrefresh: ^1.2.7
http: ^0.12.0+2

2 个答案:

答案 0 :(得分:0)

loadMore: () async {
     await getLeaderBoards(str.length).then((onValue) => {
     updateLeaderboardList(onValue)
     });
},

但是将加载器置于“ await”状态,等待该功能完成,然后再完成动画。

答案 1 :(得分:0)

我看着documentation of loadMore。由于它说分配给loadMore的函数的主体应为async,因此您无需使用then

loadMore: () async {
     final result = await getLeaderBoards(str.length);
     updateLeaderboardList(result);
},