为啥有时小吃店会失败
Posted
技术标签:
【中文标题】为啥有时小吃店会失败【英文标题】: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.
【问题讨论】:
【参考方案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);
您可以保存您确定存在于提供程序中的脚手架的上下文,以便将其传递到您需要的地方。
【讨论】:
以上是关于为啥有时小吃店会失败的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的下载有时会使用 flutter_downloader 失败?
为啥 MediaElement 有时会默默地失败,我该如何纠正它?