Flutter中如何更新代码里的showSnackBar使用方式?
升级Flutter中showSnackBar的实现(替代ScaffoldState GlobalKey方案)
在Flutter新版本中,官方推荐用ScaffoldMessenger替代GlobalKey<ScaffoldState>来显示SnackBar,这种方式更简洁且贴合框架设计。具体修改步骤如下:
移除
GlobalKey<ScaffoldState>的定义
直接删掉原代码里的final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();,同时去掉Scaffold组件上绑定的key: _scaffoldKey属性。替换SnackBar的调用逻辑
把通过_scaffoldKey触发SnackBar的代码,改成用ScaffoldMessenger.of(context)调用:
修改后的完整代码片段:
if (result.savedOK!) { Navigator.pushReplacementNamed(context, MyShifts.id); } else { // 显示SnackBar ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text( _errMessage!, style: TextStyle(fontSize: 20), textAlign: TextAlign.center, ), backgroundColor: Colors.red, duration: Duration(seconds: 3), )); }
额外说明
如果你的_scaffoldKey还用于其他功能(比如打开侧边抽屉、显示底部模态框),可以保留这个GlobalKey,但仅在SnackBar部分改用ScaffoldMessenger即可,两者互不冲突。
内容的提问来源于stack exchange,提问作者Paul Coshott
相关产品推荐
相关产品推荐

