flutter 如何在FirebaseMessaging.onBackgroundMessage中使用BuildContext

yx2lnoni  于 2023-03-31  发布在  Flutter
关注(0)|答案(1)|浏览(108)

我在应用的聊天功能中使用了流聊天。我在其中实现了通知。
所以当我在后台收到通知时

FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler);
  • 上面是我在main.dart中调用的函数。
  • 下面是后台消息的处理程序。
Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  showLog("firebaseMessagingBackgroundHandler message ===> ${message.data}");
  await Firebase.initializeApp();
  
  final chatClient = StreamChat.of(context).client; //in this line I need context but I can't pass the argument.
  try {
    showLog("in background message received");

    showStreamNotification(message, chatClient);
  } catch (e) {
    showLog(e.toString());
  }
}
oaxa6hgo

oaxa6hgo1#

您可以创建一个全局密钥并将其设置为您的MaterialApp,然后您可以从应用程序中的每个位置访问应用程序上下文。

// create a Global key to be a global variable
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

// set it to your MaterialApp
MaterialApp(
      title: 'App title',
      navigatorKey: navigatorKey,
      ...
    );

// get your app context
final chatClient = StreamChat.of(navigatorKey.currentContext!).client;

希望这个有用。

相关问题