firebase - 接收 FlutterFire 推送通知时使用 BuildContext
问题描述
为了File
在收到推送通知时下载并保存在应用程序的本机端,我们需要在BuildContext
从 FlutterFire 接收到它时有一个。
但是由于 FlutterFire 后台推送通知处理程序在隔离上运行,我们不知道在哪里可以找到有效的BuildContext
.
解决方案
我有同样的问题,但对我来说,我通过定义如下全局变量来修复它:
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);
});
}
}
推荐阅读
- google-chrome-devtools - 调试 HTTP 请求时,Chrome 浏览器开发工具中的“常规”是什么意思?
- aws-lambda - 执行错误 - 模块 'lambda_function' 上缺少处理程序 'lambda_handler'"
- wordpress - Wordpress 重写规则 - 无法获得所需的确切结构
- arrays - 如何用 Tcl 脚本计算每列的平均值
- python - 当我所做的只是遍历列表的长度时,为什么会出现索引超出范围错误?
- optimization - 在优化模型中添加惩罚约束
- laravel - barryvdh/laravel-dompdf 暂时无法使用最新版本
- java - 按下后 girdView 应该在无限滚动时回到相同的位置
- ios - 向其添加填充时,SwiftUI 按钮没有响应
- c - 如何解释汇编并将其编写为类似 RISC 的微操作