当应用程序移至后台状态并再次移至前台状态时,无限列表会导致重复

问题描述 投票:0回答:1

我正在尝试使用

ListView
构建器从 api 加载一堆名称。 我的
api
有一个名为 index 的参数,每次用户到达列表末尾时,该参数都需要增加 50 所以我在我的
ScrollController
上附加了一个
ListView
。 开始时index的值为0。

我首先在

api
 中呼叫 
initState

Follwoing 是当用户到达列表末尾时我的代码

 scrollController.addListener(() {
      if (scrollController.position.pixels ==
          scrollController.position.maxScrollExtent) {
        index += 50;

        //Calling the api again here
      }
    });

现在使用这种方式列表可以正常加载。假设用户加载了所有数据并假设索引为250,现在用户决定 将应用程序放在后台,一段时间后再次打开应用程序,最后 50 个项目会再次添加到我的列表中,我不明白为什么。

我正在使用

StreamBuilder
bloc
图案

if (snapshot.data != null) {
 studentList.addAll(snapshot.data.studentList);
}

我厌倦了不同的运算符,但它不适用于我的情况

Observable<StudentListModel> get studentList => _studentList.stream.distinct();
flutter dart listview pagination
1个回答
0
投票

我猜这是你的问题。

if (snapshot.data != null) {
  studentList.addAll(snapshot.data.studentList);
}

您将在前 50 名检索到的学生之上添加 100 名学生,其中 50 名是重复的。 您可以将代码更改为:

if (snapshot.data != null) {
  studentList = snapshot.data.studentList;
}
© www.soinside.com 2019 - 2024. All rights reserved.