在 Flutter 中显示 SnackBar

2023-12-21

我想显示一个simple SnackBar颤振内部的有状态小部件。我的应用程序创建了新实例MaterialApp有一个名为的有状态小部件MyHomePage.

我尝试展示SnackBar in showSnackBar()方法。但它失败了The method showSnackBar was called on null.

这段代码有什么问题?

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

  @override
  void initState() {
    super.initState();
    showInSnackBar("Some text");
  }

  @override
  Widget build(BuildContext context) {
    return new Padding(
            key: _scaffoldKey,
            padding: const EdgeInsets.all(16.0),
            child: new Text("Simple Text")
    );
  }

  void showInSnackBar(String value) {
    _scaffoldKey.currentState.showSnackBar(new SnackBar(
        content: new Text(value)
    ));
  }
}

解决方案:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
        title: 'Flutter',
        theme: new ThemeData(
            primarySwatch: Colors.blue,
        ),
        home: new Scaffold(body: new MyHomePage()),
      );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    showInSnackBar("Some text");
    return new Padding(
        padding: const EdgeInsets.all(16.0),
        child: new Scaffold(
          body: new Text("Simple Text")
        )
    );
  }

  void showInSnackBar(String value) {
    Scaffold.of(context).showSnackBar(new SnackBar(
        content: new Text(value)
    ));
  }
}

就我而言,我有这样的代码(在类状态)

final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

void showInSnackBar(String value) {
    _scaffoldKey.currentState.showSnackBar(new SnackBar(content: new Text(value)));
}

但我没有设置脚手架的钥匙。 所以当我添加键:_scaffoldKey

 @override
 Widget build(BuildContext context) {
  return new Scaffold(
    key: _scaffoldKey,
    body: new SafeArea(

小吃店开始工作:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Flutter 中显示 SnackBar 的相关文章

随机推荐

  • SQL:检查一个数字是否在多个范围内

    假设我们有 2 张桌子 Table Values Id Group Value A X 15 B Y 55 Table Ranges Group LowLimit HighLimit X 0 10 X 20 30 Y 30 40 Y 50
  • UITextView 末尾的省略号

    如果我有多行不可滚动的 UITextView 其文本长度超出了可见区域的容纳范围 那么文本就会像这样被切断 Congress shall make no law respecting an establishment of religion
  • 理解 scipy 反卷积

    我试图理解scipy signal deconvolve https docs scipy org doc scipy 0 15 0 reference generated scipy signal deconvolve html 从数学的
  • 当用户移动时在 Android 谷歌地图中绘制折线

    嘿 我是 Android 新手 我已经了解了 android 谷歌地图 我想跟踪用户移动并在 android 谷歌地图中实时绘制折线路径 有人可以帮助我这个例子吗 我可以获得位置变化间隔 但仍然不知道如何将其应用到折线并将数据 LatLng
  • 将 SQLite 数据库从一个版本升级到另一版本?

    我收到错误Logcat说某个专栏 在我的SQLiteOpenHelper子类 不存在 我以为我可以通过更改来升级数据库DATABASE CREATE细绳 但显然不是 那么我如何 逐步 将我的 SQLite 数据库从版本 1 升级到版本 2
  • 如何将 Interface Builder 与 Swift 结合使用?

    将 Swift 代码连接到 Storyboard 时 如何添加IBAction and IBOutlet tags Add IBAction and IBOutlet变量和函数的属性 以便它们在界面生成器中可见 class ViewCont
  • 如何在tensorflow中将float32 tiff图像解码为float32张量?

    我有一组采用 tif 格式的 float32 数据类型的输入图像 rgb 和图像目标 灰度 是否可以在tensorflow中将它们解码为float32张量 在写这篇评论时tfio experimental image decode tiff
  • 如何实现空格键的actionListener作为动作事件

    我将其设置为在计时器上不断更新 但我希望能够使用空格键暂停计时器 我尝试实现一个 actionListener 但我不确定将其应用于什么 我能找到的大多数示例都与按钮或文本框相关 而不是 jpanel 内的键盘按下 我已将 src 打印到控
  • 多个 Vue 应用程序,在 monorepo 中共享组件

    我们的系统有两种关键用户类型 我们希望将应用程序分解到单个存储库中的两个单独的文件夹中 那么我们的想法是拥有一个两个项目都可以使用的共享组件库 我正在寻找有关如何实现此类设置的最佳实践的一些指导 理想情况下我们可以满足以下条件 每个应用程序
  • 由于存在已知用于跨站脚本攻击的字符,因此禁止访问

    谁能告诉我以下 HTTP 错误消息来自哪里 由于存在已知用于跨站点脚本攻击的字符 因此禁止访问 此网站不允许 URL 中可能包含嵌入的 HTML 标记 我们使用动态生成的 URL 在这种特定情况下 URL 包含字符 我们对生成的 URL 进
  • 为什么 MSVC++11 拒绝函数的 constexpr 限定?

    因此 在尝试使用 constexpr 时 MSVC Visual Studio 2012 在尝试使用以下命令限定我的函数时出现了错误constexpr使用这个简单程序的关键字 包括省略 constexpr int factorial int
  • select() 似乎不适用于 TTY

    我目前正在编写一个程序 需要通过UART接口与AT接口通信 操作系统是Linux 但我在使用时遇到问题select 在文件描述符上 由于某种原因 select 不认为文件描述符已准备好读取 但为了缩小问题范围 我使用了以下程序 int ma
  • 无法推断出足够的有关 _ 的类型信息;需要类型注释或通用参数绑定

    trait Bar fn bar self enum Foo
  • 优化计算账户余额的 SQL 查询

    我有以下表格 分别是 BankDetails 和 Transactiondetails 使用这两个表 我想获取帐户名称的当前余额 Tables Create table Bankdetails AccName varchar 50 AccN
  • awk 替换行中的字符串

    笔记 这个问题看起来像一个之前发过一篇 https stackoverflow com questions 39273660 awk sed replace in each line with previous string in the
  • 从贝塞尔曲线沿线的点导出贝塞尔曲线控制点的算法?

    我一直在寻找 但显然没有找到一种算法 该算法允许我插入已知沿曲线的 x y 坐标列表 以便获得三次贝塞尔曲线吐口的 4 个控制点出去 更准确地说 我正在寻找一种算法 它可以为我提供塑造曲线所需的两个控制点 同时输入一系列离散点 包括确定曲线
  • PHP array_push() 正在覆盖现有的数组元素

    我试图将对象推入数组中 最终得到如下所示的对象数组 recipient name John D phone number 123456 recipient name Doe J phone number 654321 recipient n
  • PHP 标头不适用于 Access-Control-Allow-Origin

    我正在使用Blueimp 的 jQuery 文件上传插件 http blueimp github io jQuery File Upload 将图像上传到服务器 问题是 发送服务器是admin example com 并且存储图像的接收服务
  • 无法在 XCode 中为 UILabel 设置自定义字体

    我无法在 XCode 中为 UILabel 设置自定义字体 这是我尝试过的 下载 JennaSue 字体 http www dafont com jenna sue font http www dafont com jenna sue fo
  • 在 Flutter 中显示 SnackBar

    我想显示一个simple SnackBar颤振内部的有状态小部件 我的应用程序创建了新实例MaterialApp有一个名为的有状态小部件MyHomePage 我尝试展示SnackBar in showSnackBar 方法 但它失败了The