尝试显示 Flutter 快餐栏会引发异常错误
Posted
技术标签:
【中文标题】尝试显示 Flutter 快餐栏会引发异常错误【英文标题】:Trying to display a Flutter snackbar throws an exception error 【发布时间】:2019-10-25 06:34:38 【问题描述】:请在将其标记为重复之前看看,我一直在尝试this thread,但我无法让它工作。 我正在尝试让我的学习应用程序显示一个小吃栏,是的,我运行了谷歌食谱示例并且它有效,但我试图挑战我自己做其他事情,基本上它是什么,只是一个带有两个按钮的脚手架增加和减少,当索引为零时,我想显示一个索引为零的小吃店,不能减少更多。所以我得到了这个按钮,onPressed 方法调用了传递上下文参数的 _onTapPrevious 方法,但我不确定这是传递上下文的正确方法。
new RaisedButton(
padding: const EdgeInsets.all(8.0),
textColor: Colors.white,
color: Colors.redAccent,
onPressed: () => _onTapPrevious(context),
child: new Text("Previous"),
),
这是我创建了一个snackbar的_onTapPrevious方法,它还检查了widget index是否>大于0,如果是,它可以减少索引,当它达到0时,它应该显示snackbar。
_onTapPrevious(BuildContext context)
final snackBar = SnackBar(content: Text("Index 0, can't decrease more."));
setState(()
if (widget.index > 0)
widget.index--;
else
Scaffold.of(context).showSnackBar(snackBar);
);
我得到的错误:
flutter: Another exception was thrown: Scaffold.of() called with a context that does not contain a Scaffold.
【问题讨论】:
【参考方案1】:尝试添加
final _scaffoldKey = GlobalKey<ScaffoldState>();
到你的班级,然后在 Scaffold:
key: _scaffoldKey,
最后:
_scaffoldKey.currentState.showSnackBar(snackBar);
希望有帮助!
【讨论】:
我就是这样做的,就在你写这个解决方案之前,就在我删除这个问题的时候,它收到了你写了一个答案的通知,但无论如何谢谢你,我是保留它并标记为解决方案。 :)以上是关于尝试显示 Flutter 快餐栏会引发异常错误的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC HTTP 错误 500:Servlet 通知的 Servlet.init() 引发异常
异常:flutter 项目上没有配置 Linux 桌面项目错误
渲染期间引发的异常:RelativeLayout 中不存在循环依赖项 异常详细信息记录在“窗口”>“显示视图”>“错误日志”中
Flutter:未处理的异常:错误状态:调用关闭后无法添加新事件(不一样的情况)