Снимок Firebase Flutter всегда возвращает 1 документ, когда он пуст - PullRequest
0 голосов
/ 12 марта 2020
StreamBuilder(
    stream: workoutsViewModel.listenMyWorkoutsChange(),
    builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {

      if (snapshot.hasData) {

        final workoutList = snapshot.data.documentChanges.map((doc) => WorkoutModel.fromMap(doc.document.data, doc.document.documentID)).toList();
        print("-- workouts " + workoutList.length.toString());

        workoutList.forEach((c) {
          print("---------- changed  document " + c.title);
        });

У меня есть этот код, я могу прослушать свои снимки и удалить любой документ из коллекции.

  • Если у меня 4 элемента и удалить 1, вернуть 3 элемента (document или documentChanged)

  • Если у меня 3 элемента, и удалить 1, вернуть 2 элемента (document или documentChanged)

  • Если у меня есть 2 элемента, и удалить 1, вернуть 1 элемент (document или documentChanged)

  • Если у меня есть ТОЛЬКО 1 элемент и удалить 1, вернуть 1 элемент (то же самое) (document или documentChanged) НЕ ПУСТО

Но если я перезапущу приложение, это работает, и оно будет пустым.

Может кто-нибудь помочь, что происходит?

РЕШЕНИЕ

https://github.com/FirebaseExtended/flutterfire/issues/2161

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Итак, это базовая c ошибка фейерверка, я обнаружил, поэтому сейчас закрываю эту проблему.

0 голосов
/ 13 марта 2020

Ну, это просто теория, поскольку у нас нет всего кода и структуры базы данных, но в соответствии с этим do c метод documentChanges должен вернуть список DocumentChange объектов.

Так что, на мой взгляд, не странно, что он возвращает 1 результат, когда последний документ удален. Кажется, это правильное поведение, так как среди типов свойство класса DocumentChange у вас также есть remove.

Более странным для меня является то, что вы получите больше результатов, когда будете только удаление документа. В такой ситуации должен быть только тот, кого вы удалили.

Если вы посмотрите на DocumentChange ссылка , есть свойства oldIndex и newIndex, возможно, они были изменены ...

Если бы я был на вашем месте я бы зарегистрировал все DocumentChange свойства и проанализировал, в чем причина такого поведения.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...