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

时间:2019-01-22 07:05:29

标签: listview dart flutter paging

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

我首先在api中呼叫initState

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

 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();

1 个答案:

答案 0 :(得分:0)

我猜这是你的问题。

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

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

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