首页 > 解决方案 > 接收 FlutterFire 推送通知时使用 BuildContext

问题描述

为了File在收到推送通知时下载并保存在应用程序的本机端,我们需要在BuildContext从 FlutterFire 接收到它时有一个。

但是由于 FlutterFire 后台推送通知处理程序在隔离上运行,我们不知道在哪里可以找到有效的BuildContext.

标签: firebaseflutterpush-notification

解决方案


我有同样的问题,但对我来说,我通过定义如下全局变量来修复它:

BuildContext globalContext;

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
  print("Handling a background message: ${message.data}");
    Provider.of<HomePageSearchFlag>(globalContext, listen: false)
        .changeStatus(searchStatus: true);
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    globalContext = context;
    Future.delayed(Duration.zero, () {
      setupFCM(context);
    });
  }
}

推荐阅读