尝试显示 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:未处理的异常:错误状态:调用关闭后无法添加新事件(不一样的情况)

在 UI Firebase Auth Flutter 中显示异常错误

尝试将胶水表复制到红移时出现“在 awaitResult 中引发的异常:”错误