Flutter Streambuilder дублирует элементы

#flutter #google-cloud-firestore #stream-builder

#flutter #google-cloud-firestore #stream-builder

Вопрос:

У меня есть StreamBuilder, подключенный к списку, и список получает свои данные из Firebase, но при каждом событии в моей базе данных элементы в моем Streambuilder дублируются.

Вот мой код StreamBuilder:

 StreamBuilder(
                  stream: masterListStart().asStream(),
                  builder: (context, snapshot) {
                    //return coursesList.length == 0
                    return finishedLoadingList
                        ? ListView.builder(
                            scrollDirection: Axis.horizontal,
                            shrinkWrap: true,
                            itemCount: storysList.length,
                            itemBuilder: (context, index) {
                              //
                              StoryItems data = storysList[index];
                              //
                              return StoryItems(
                                data: data,
                              );
                            },
                          )
                        : CircularProgressIndicator();
                  },
                ),
 

Как я могу помешать StreamBuilder сделать это?

Комментарии:

1. Где finishedLoadingList переменная?

2. Он находится в моем setState после завершения извлечения. Данные отображаются, но дублируются при изменении баз данных

Ответ №1:

Вместо использования finishedLoadingList вы можете просто проверить состояние подключения к снимку следующим образом

 StreamBuilder(
  stream: masterListStart().asStream(),
  builder: (context, snapshot) {
    //return coursesList.length == 0
    return (ConnectionState.done == snapshot.connectionState) ? ListView.builder(
      scrollDirection: Axis.horizontal,
      shrinkWrap: true,
      itemCount: storysList.length,
      itemBuilder: (context, index) {
        //
        StoryItems data = storysList[index];
        //
        return StoryItems(
          data: data,
        );
      },
    ) : CircularProgressIndicator();
  },
),
 

Комментарии:

1. Сэр, вы лучшие, большое вам спасибо, все работает отлично. С наилучшими пожеланиями

2. Рад, что это помогло! Счастливое кодирование

3. Спасибо вам, сэр, за то, что вы

4. Здравствуйте, я снова запустил код, но проблема возникает снова, я попытался все перестроить и деинсталлировал приложение, проверил код и т. Д., Но, похоже, это происходит снова. Какие-либо другие решения?

5. Спасибо. Кстати, извините, что снова попросил вас помочь мне, а затем решил это самостоятельно, не хотел тратить ваше время.