Флаттер: метод '[]' был вызван на нуль. StreamProvider - PullRequest
0 голосов
/ 08 июля 2019

У меня есть чтение StreamProvider из Firebase Firestore, которое отлично работает, когда в документе есть данные, но если документ / коллекция еще не созданы, я получаю сообщение об ошибке «Метод '[]' был вызван для нуля«.Это просто чтение числа из firestore, если есть ноль, я хочу установить значение по умолчанию 0.

Я попытался использовать свойство "initialdata" в SteamProvider, установив в 0, но не уверен, установил ли я егоправо.Я думаю, что свойство «catchError» StreamProvider может работать, но я не могу найти никаких примеров в Интернете.

См. Ниже для StreamProvider, его под MultiProvider.Ниже это класс PomosWeekly, он просто читает int.

StreamProvider<PomosWeekly>.value(
            stream: Global.pomosWeeklyRef.documentStream2,
            initialData: PomosWeekly.initialData()),
class PomosWeekly {
  int count;

  PomosWeekly({this.count});

  factory PomosWeekly.fromMap(Map data) {
    return PomosWeekly(
      count: data['week'] ??
          0,
    );
  }

  factory PomosWeekly.initialData() {
    return PomosWeekly(
      count: 0,
    );
  }
}

Поток работает нормально, если в этом месте есть документы / поля, но ошибки, если документ еще не создан, я просто хочу вернуть 0, если есть ошибка.Ошибка: «Метод '[]' был вызван с нулевым значением."

...