Flutter Метод '[]' был вызван при нулевой ошибке - PullRequest
0 голосов
/ 05 января 2020

У меня есть приложение Flutter с бэкэндом Firebase. Я использую электронную почту и метод входа в Google. Когда пользователь впервые входит в систему, используя метод входа в Google, эта странная ошибка появляется на секунду. (Когда пользователь регистрируется с помощью электронной почты / pswrd, это не отображается)

Было сгенерировано следующее NoSuchMethodError при построении StreamBuilder (dirty, состояние: _StreamBuilderBaseState> # e1ffb): Метод '[]' был называется ноль. Получатель: null Пробный вызов:

Вот мой код на github: https://github.com/TenPetr/fridgy (эта ошибка, вероятно, вызвана из lib / pages / home. дарт файл)

Спасибо за ваши ответы!

Ответы [ 2 ]

0 голосов
/ 06 января 2020

Я обнаружил, что ошибка связана с временем пользователя @Preet Parekh. И я решаю эту проблему, удаляя метод, который отвечал за определение, вошел ли пользователь в первый раз или нет. Вместо этого я использовал свойства AuthResult - result.additionalUserInfo.isNewUser

https://firebase.google.com/docs/reference/android/com/google/firebase/auth/AdditionalUserInfo

Спасибо за вашу помощь.

0 голосов
/ 05 января 2020

Это происходит потому, что когда Stream находится в состоянии загрузки, способ решить эту проблему - использовать ConnectionState потока и показать либо ProgressBar, либо пустой контейнер.

//Data Logic
Stream<QuerySnapshot> snapshot =  Firestore.instance.collection("collection_name").snapshots();

//Ui Logic
StreamBuilder(
  stream: snapshot,
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if(snapshot.connectionState == ConnectionState.active) {
      //Further Logic
      return Text('It works');
    } else {
      return CircularProgressIndicator();
    }
  },
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...