【问题标题】:Why sometimes snackbar is failing为什么有时小吃店会失败
【发布时间】:2021-06-30 03:11:43
【问题描述】:

请帮助解释为什么有时我的 SnackBar 会显示错误。我不明白问题会在什么情况下出现。我只想指出,即使它显示错误,在应用程序本身中,它也可以正常工作。

这是我的代码:

void showFailedSnackBar(String s) {
    SnackBar snackBar = SnackBar(
      content: Text(s),
      duration: Duration(seconds: 3),
      backgroundColor: Theme.of(context).primaryColor,
    );

    ScaffoldMessenger.of(context).showSnackBar(snackBar);
  }

这是错误:

E/flutter ( 7879): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: This widget has been unmounted, so the State no longer has a context (and should be considered defunct).
E/flutter ( 7879): Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active.

【问题讨论】:

    标签: flutter dart snackbar


    【解决方案1】:

    尝试检查小部件是否仍然挂载在三个中:

    void showFailedSnackBar(String s) {
        if (mounted) {
        SnackBar snackBar = SnackBar(
          content: Text(s),
          duration: Duration(seconds: 3),
          backgroundColor: Theme.of(context).primaryColor,
        );
    
        ScaffoldMessenger.of(context).showSnackBar(snackBar);
        }
    
      }
    

    【讨论】:

      【解决方案2】:

      在你的函数 showSnackbar 中,除了 String 之外,你还可以传递一个 BuildContext 上下文变量,这样你就知道你传递了哪个上下文,例如

          SnackBar snackBar = SnackBar(
            content: Text(s),
            duration: Duration(seconds: 3),
            backgroundColor: Theme.of(context).primaryColor,
          );
      
          ScaffoldMessenger.of(context).showSnackBar(snackBar);
        }
      

      您可以保存您确定存在于提供程序中的脚手架的上下文,以便将其传递到您需要的地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        • 1970-01-01
        • 2020-07-25
        • 2019-02-22
        • 2011-06-30
        • 2018-09-27
        • 1970-01-01
        相关资源
        最近更新 更多