Инициализация не работает при перезапуске приложения

#android #ios #flutter #dart

Вопрос:

Привет, я сохраняю некоторые данные в облачном магазине firestore при входе пользователя в Google. У меня есть функция, которая инициализирует все данные пользователя из Firestore

     return FirebaseFirestore.instance
        .collection("users")
        .doc(Provider.of<Authentication>(context, listen: false).getUserUID)
        .get()
        .then((doc) {
      initUserName = doc.data()!["username"];
      initUserDisplayName = doc.data()!["name"];
      initUserAvatar = doc.data()!["avatar"];
      notifyListeners();
    });
  }
 

и на моей домашней странице у меня есть состояние инициализации

  void initState() {
    Provider.of<Authentication>(context, listen: false).initUserData(context);
    super.initState();
  }
 

все работает нормально. Но когда я перезапускаю свое приложение, оно показывает, что

 LateInitializationError: Field 'userAvatar' has not been initialized.
 

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

1. Возможно, ключевая проблема initUserAvatar = doc.данные()! [«аватар»]; // здесь аватар или пользовательаватар?

2. Нет, он работает, когда я вхожу в систему, но когда я перезапускаю приложение, оно перестает работать

3. Ошибка означает, что переменная UserAvatar, помеченная как «поздно», была доступна в состоянии null. Вам следует проверить api.dart.dev/стабильный/2.8.2/ядро dart/… и dart.dev/нулевая безопасность/понимание-нулевая безопасность#поздние переменные

4. Возможно , вам следует сохранить код инициализации в методе OnStart() вместо метода onCreate ().