Scaffold.of() called with a context that does not contain a Scaffold.
当你在 dart 文件中要使用 SnackBar 时,需要调用 BuildContext 参数,但是你经常会遇到 在使用的时候报上边的错
为什么会出现这个问题呢?很多时候是因为你传递的 BuildContext 不是 Scaffold 的,而是当前parent widget 的,所以会有这个问题。那么该怎么解决这个问题呢?目前我发现两种方案:
解决办法1:
使用 Builder 包裹,参考文章:https://api.flutter.dev/flutter/material/Scaffold/of.html
body: Builder( builder: (BuildContext context){ return Column( children: <Widget>[ ], ); }, ),
解决办法2
给Scaffold 设置一个全局 key,通过 key 的如下方法来显示
var _scaffoldkey = new GlobalKey<ScaffoldState>();Scaffold( key: _scaffoldkey, body: SafeArea( child: _buildContent(), ),)// 显示 SnackBar 的方法void showSnackBar(String text) { _scaffoldkey.currentState.showSnackBar(SnackBar( content: Text(text), backgroundColor: Colors.blueAccent, ));}
2.如何获取 Widget 的宽高尺寸呢?
可以使用 context.size.height context.size.width 分别获取 Widget 的宽高尺寸
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接