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()),
));