【发布时间】:2021-10-12 00:15:59
【问题描述】:
我需要在 main.dart 类的 main() {} 方法中访问 BuildContext 以在 firebase FirebaseMessaging.onMessage.listen 方法中显示 popUp 对话框收到新的推送通知,main()中没有BuildContext时如何访问?
【问题讨论】:
我需要在 main.dart 类的 main() {} 方法中访问 BuildContext 以在 firebase FirebaseMessaging.onMessage.listen 方法中显示 popUp 对话框收到新的推送通知,main()中没有BuildContext时如何访问?
【问题讨论】:
你真的不能。
在main.dart 中的main 函数中,您必须调用runApp() 来启动您的第一个小部件,并且在此小部件中,您将可以访问BuildContext,因为所有有状态/无状态小部件都将收到BuildContext 通过他们的build 方法。
例如,您可能想做这样的事情:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(
MySuperApplication(),
);
}
class MySuperApplicationextends StatefulWidget {
const MySuperApplication({
Key? key,
}) : super(key: key);
@override
_MySuperApplicationState createState() => _MySuperApplicationState();
}
class _MySuperApplicationState extends State<MySuperApplication> {
FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
@override
Widget build(BuildContext context) {
// You have access to your BuildContext here, and you can initialize FirebaseMessaging.
_firebaseMessaging.subscribeToTopic("all");
// return any widget.
return WhatEverWidget()
}
}
【讨论】: