Dart 如何在EventChannel.listen的回调OneEvent中显示SnackBar
使用Dart 如何在EventChannel.listen的回调OneEvent中显示SnackBar,dart,flutter,Dart,Flutter,使用EventChannel从本机代码接收事件 内容是字符串,我想用SnackBar显示它 但是Scaffold.of返回null。我发现没有任何东西可以获取由小部件构建(…)创建的Scaffold的BuildContext 代码如下所示: @override void initState() { super.initState(); showMsg.receiveBroadcastStream().listen( (event) => setState(() {
EventChannel
从本机代码接收事件
内容是字符串,我想用SnackBar
显示它
但是Scaffold.of
返回null。我发现没有任何东西可以获取由小部件构建(…)
创建的Scaffold
的BuildContext
代码如下所示:
@override
void initState() {
super.initState();
showMsg.receiveBroadcastStream().listen(
(event) => setState(() {
Scaffold.of(context).showSnackBar(new SnackBar(
content: new Text(event.toString()),
));
}),
onError: (event) => {}
);
编辑/更新答案 使用新的颤振更新,您现在必须使用
ScaffoldMessenger
来显示SnackBar
ScaffoldMessenger.of(上下文).showSnackBar(
小吃条(
内容:文本(“测试”),
),
);
我正在使用下面的颤振版本和通道
1.24.0-10.1.pre•频道开发
旧答案
您需要脚手架的密钥,使用该密钥可以获取脚手架的状态
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
使用此键
可以访问脚手架的状态
_scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text(event.toString()),
));
你好答案对你有用吗?我得到了一个异常,因为“方法'showSnackBar'被调用为null。”请注意。@ManojArunS不要将_scaffoldKey放在无状态小部件中。这样的状态进入状态类。将小部件转换为有状态。我一直有同样的问题,最后我意识到这就是原因。
return new Scaffold(
key: _scaffoldKey,
...,
);
_scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text(event.toString()),
));