Моя структура приложения немного запутана, но мне нужно сначала добавить этот патч, а затем я реструктурирую всю логику c. Дело в том, что я сначала проверяю, есть ли у пользователя firebase, затем, если он есть, я использую StreamBuilder для получения текущего профиля пользователя из Firestore, тогда у меня есть метод _firebaseMessaging.configure, потому что onLaunch и onResume я использую этот обратный вызов:
void _navigateToGestorResevas(Map<String, dynamic> message, User currentUser) {
Navigator.push(context,
MaterialPageRoute(builder: (context) =>
GestorScreen(user: currentUser)));
}
Потому что мне нужно отправить пользователя на этот экран, где он получит сообщение из firebase. onResume это работает нормально, но onLaunch выходит на экран и выбирает данные, но есть примерно 20 секунд, когда есть какой-то сбой. Это переключается примерно 20-30 раз между двумя состояниями, где у меня есть данные, а у меня нет данных снимка в этом _initState fun c:
final snapshot = await _dbRef.child('mensajes').child(widget.user.id).once();
if (snapshot.value != null) {
setState(() {
hayMensajes = true;
});
final data = snapshot.value;
for (var entry in data.entries) {
Message message = Message.fromJson(entry.value);
setState(() {
message.add(message);
});
}
} else {
setState(() {
hayMensajes = false;
});
}
У кого-нибудь есть идея, что я делаю неправильно?