#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 ().