Бесконечный список вызывает дублирование, когда приложение переходит в фоновое состояние и снова в состояние переднего плана - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь загрузить группу имен из API, используя ListView builder. My api имеет параметр index, который нужно увеличивать на 50 каждый раз, когда пользователь достигает конца списка поэтому я прикрепил ScrollController к своему ListView. Значение индекса в начале равно 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();

1 Ответ

0 голосов
/ 22 января 2019

Полагаю, это ваша проблема.

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

Вы добавляете поверх первых 50 найденных учеников, 100 учеников, 50 из которых повторяются. Вы можете изменить свой код на:

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