gpt4 book ai didi

flutter - Firebase 云消息传递 onLaunch 回调

转载 作者:行者123 更新时间:2023-12-03 04:55:50 24 4
gpt4 key购买 nike

我的应用程序结构有点乱,但我必须先添加这个补丁,然后我会重新构建整个逻辑。问题是我首先检查是否有 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 秒的时间会出现某种故障。它在这个 _initState 函数中我有和没有快照数据的两个状态之间切换 20-30 次:
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;
});
}

有人知道我在做什么错吗?

最佳答案

如果我没记错的话,有一些关于 FCM 的活跃问题 onLaunch flutter 回调。其中一些仍然没有修复。大多数人不得不面对的问题之一是 onLaunch回调被多次调用。我不知道为什么会这样,但就像你的情况一样,你可以通过一些临时修复来解决这个问题。

如果同一个屏幕被一遍又一遍地推送,并且出现故障,您可以弹出堆栈,直到它到达您要打开的那个,并设置一个条件来推送导航器,只有当新路由与旧路由不同时。使用命名路线,

Navigator.popUntil(context, ModalRoute.withName(routeName));

if (ModalRoute.of(context).settings.name != routeName) {
Navigator.pushNamed(context, routeName);
}

我不确定这是否是你问的问题,但我希望至少我的回答能有所帮助。

关于flutter - Firebase 云消息传递 onLaunch 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60608466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com