我正在尝试使用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();
答案 0 :(得分:0)
我猜这是你的问题。
if (snapshot.data != null) {
studentList.addAll(snapshot.data.studentList);
}
您将在前50名检索到的学生之上添加100名学生,其中50名是重复的。 您可以将代码更改为:
if (snapshot.data != null) {
studentList = snapshot.data.studentList;
}