跳到主要内容

flutter Scaffold context不正确的问题

管

管理员

http://www.pangbo51.com/flutter/415.html

2020年10月20日 2,163 次阅读
本页目录
 
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 的宽高尺寸

Related

相关文章

同分类文章 →
2026年07月28日 flutter

Dart 3 记录(Records)和密封类(Sealed classes)

Dart 3 引入了几个极其强大的语言特性,其中最耀眼、对我们日常开发改变最大的就是 记录(Records) 和 密封类(Sealed classes),它们配合 模式匹配(Pattern Matching),让 Dart 的表现力达到了现代编程语言(如 Swift、Kotlin、Rust

2026年06月29日 flutter

flutter的 Clean Architecture架构设计

Clean Architecture(清晰架构)是一种将应用程序分层的设计模式,强调关注点分离与依赖规则,通过将业务逻辑与框架、UI、数据源解耦,提升代码的可测试性、可维护性与可扩展性。在 Flutter/Dart 环境下,Clean Architecture 通

2025年12月22日 flutter

Riverpod 实战:如何优雅地实现网络请求的防抖与取消

在开发复杂的应用程序时,管理网络请求的生命周期至关重要。例如,用户在搜索框快速输入时可能会触发大量请求,或者在请求完成前离开页面,导致不必要的资源浪费。本文将介绍如何在 Riverpod 中利用 ref.onDispose 和&ldquo;

WeChat

扫码加我微信

微信二维码