我正在构建一个带有颤振和Firebase云消息传递的应用程序。在 onLounch 方法中,我有一些触发重定向和数据刷新的 beahviuorSubject。然而,它们不起作用,因为它们在有人听之前就开火了。我不想使用 ReplaySubject,因为它很棘手,所以我想知道是否有一些标准方法可以在应用程序准备就绪之前将它们镀金?
附言我知道它们确实有效,因为如果我做一些await Future.delay(Duration(seconds: 10))
一切都很好,但这不是要走的路。
好的,我已经找到了如何等待某个屏幕。
基本上,一旦您调用FirebaseMessaging.configure()
方法,就会触发onLaunch
方法。因此,如果您希望应用程序从加载屏幕开始,然后在加载一些数据后转到主屏幕,您只需在主屏幕内调用FirebaseMessaging.configure()
即可在此时触发onLaunch
。
所以我通过将FirebaseMessageing.configure((添加到启动模型中来解决这个问题 在后台处理程序中,我有此代码 我的代码是:
handle(dynamic data, bool onLaunch) {
if (onLaunch) {
onHomeReady.take(1).listen((event) {
_innerHandler(data, onLaunch);
});
} else {
_innerHandler(data, onLaunch);
}
}
和 onHomeReady.add(..( 在 home init 方法中触发。这更灵活,关注点更分离,但在大多数情况下,在主页中调用 FirebaseMessaging.configure(( 可以完成工作。