【问题标题】:Flutter how to use context outside build widget?Flutter如何在构建小部件之外使用上下文?
【发布时间】:2021-02-04 08:30:28
【问题描述】:

我需要在 Widget Build 之外使用上下文。我有一个简单的函数,我在其中显示需要上下文的 showDialog。

代码

 check() async {

    final storage = new FlutterSecureStorage();

    String imi = await storage.read(key: "imei");
    //print(imi);
    showDialog(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return Center(
              child: const SpinKitWave(
                  color: kPrimaryColor, type: SpinKitWaveType.center));
        });

    if (imi == "loginhuavaha") {
      setState(() {
        this._query();
        checkLogin = true;
      });
    }
  }

我需要使用上下文但在 Build Widget 之外我该如何使用任何解决方案?

【问题讨论】:

  • 你可以在有状态的小部件中做到这一点

标签: flutter dart


【解决方案1】:

在类中定义整个 check() 函数

【讨论】:

    【解决方案2】:

    调用此函数时,您需要像这样将上下文传递给它。

    check(BuildContext context) async {
    
    final storage = new FlutterSecureStorage();
    
    String imi = await storage.read(key: "imei");
    //print(imi);
    showDialog(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return Center(
              child: const SpinKitWave(
                  color: kPrimaryColor, type: SpinKitWaveType.center));
        });
    
    if (imi == "loginhuavaha") {
      setState(() {
        this._query();
        checkLogin = true;
      });
     }
    }
    

    【讨论】:

    • 我在 INIT 状态下调用检查函数,所以我不能传递内容是 k
    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2021-11-11
    • 2019-06-07
    • 2020-02-24
    相关资源
    最近更新 更多