等到应用程序在 onLaunch 之后启动,使用 firebase 消息传递和 flutter

Wait until app starts after onLaunch with firebase messaging and flutter

我正在构建一个带有 flutter 和 firebase 云消息传递的应用程序。在 onLounch 方法中,我有一些触发重定向和数据刷新的 beahviuorSubjects。然而,他们没有工作,因为他们在有人倾听之前就开火了。我不想使用 ReplaySubject 因为它很棘手所以我想知道是否有一些标准的方法如何在应用程序准备好之前将它们镀金?

p.s。我知道它们确实有效,因为如果我做一些 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() 即可。