flutter Scaffold context不正确的问题
来源:www.pangbo51.com 更新时间:2023-05-25 21:55
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>[
],
);
},
),
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 的宽高尺寸