我是flutter的新手,在这里我找不到为什么我的snackbar没有显示在用户界面中。我尝试了完全一样的文档。
Scaffold(
body: Center(
child: ElevatedButton(
child: const Text('Show SnackBar'),
onPressed: () {
final snackBar = SnackBar(
content: const Text('Yay! A SnackBar!'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {},
),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
},
),
),
));
3条答案
按热度按时间eagi6jfj1#
问题是,对
ScaffoldMessenger.of(context).showSnackBar(snackBar)
的调用使Flutter在小部件树中搜索ScaffoldMessenger
类型的祖先,但它无法找到。发生这种情况的原因是,您传入了小部件的
BuildContext
,而小部件位于Scaffold声明的**之下,但它却以相反的方向进行搜索。一种解决方案是,将对
ScaffoldMessenger.of
的调用封装在Builder
小部件中,这将引入一个新的BuildContext
,然后Flutter能够在小部件树中找到ScaffoldMessenger并使用它来显示SnackBar。查看
Builder
文档,它解释了关于.of()
方法的所有内容:https://api.flutter.dev/flutter/widgets/Builder-class.htmldeyfvvtc2#
这是在flutter中显示SnackBar的示例代码
照片:
wxclj1h53#
尝试下面的代码,你可能错过了忘记 Package 你的支架与
MaterialApp();