如何在Flutter中正确显示Snackbar?

如何在Flutter中正确显示Snackbar?,第1张

如何在Flutter中正确显示Snackbar?

发生这种情况是因为

BuildContext
使用的人没有
Scaffold
祖先,因此将无法找到它来呈现,
SnackBar
因为
Scaffold
要显示它。

根据方法文档:

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

@overrideWidget 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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5051828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存