发生这种情况是因为
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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)