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>[
      ],        
    );
  },
),
解决办法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 的宽高尺寸