【问题标题】:How to access BuildContext in main() method of Flutter launcher class?如何在 Flutter 启动器类的 main() 方法中访问 BuildContext?
【发布时间】:2021-10-12 00:15:59
【问题描述】:

我需要在 main.dart 类的 main() {} 方法中访问 BuildContext 以在 firebase FirebaseMessaging.onMessage.listen 方法中显示 popUp 对话框收到新的推送通知,main()中没有BuildContext时如何访问?

【问题讨论】:

    标签: flutter widget main


    【解决方案1】:

    你真的不能。

    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()
      }
    }
    
    

    【讨论】:

      猜你喜欢
      • 2021-03-13
      • 2020-12-27
      • 1970-01-01
      • 2011-06-10
      • 2013-10-03
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多