您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Flutter中正确显示Snackbar?

如何在Flutter中正确显示Snackbar?

发生这种情况是因为BuildContext使用的人没有Scaffold祖先,因此将无法找到它来呈现,SnackBar因为Scaffold显示它。

根据方法文档:

当实际上在同一构建函数中创建了脚手架时,该构建函数的context参数不能用于找到该脚手架(因为它在返回的小部件“上方”)。在这种情况下,可以使用以下带有Builder的技术来为BuildContext提供“在”脚手架下方的新作用域:

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('Demo')
    ),
    body: Builder(
      // Create an inner BuildContext so that the onPressed methods
      // can refer to the Scaffold with Scaffold.of().
      builder: (BuildContext context) {
        return Center(
          child: RaisedButton(
            child: Text('SHOW A SNACKBAR'),
            onPressed: () {
              Scaffold.of(context).showSnackBar(SnackBar(
                content: Text('Hello!'),
              ));
            },
          ),
        );
      },
    ),
  );
}

与使用@ ,@ Epizon答案已经提到过的相比,将其包装FloatingActionButton一个Builder小部件中将使它变得更加优雅GlobalKey

其他 2022/1/1 18:14:28 有527人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶