Flutter中的EventChannel的使用场景:从Native端向Flutter端发送消息。
下面总结一下具体的使用步骤。
Dart端非常简单只有两步:
1:初始化eventChannel。
static const EventChannel eventChannel = EventChannel('channelName');
2: initstate方法里绑定回调函数:
eventChannel.receiveBroadcastStream().listen(_onEvent, onError: _onError);
并实现(_onEvent和_onError)两个绑定的方法:
void _onEvent(Object event) {
setState(() {
//do something
});
}
void _onError(Object error) {
setState(() {
//do something
});
}
iOS端步骤略多:
1: 添加协议:
<FlutterStreamHandler>
2: 创建eventchannel:
FlutterEventChannel* channel = [FlutterEventChannel eventChannelWithName:@"channelName" binaryMessenger:controller];
3: 设置channel代理:
[chargingChannel setStreamHandler:self];
4: 定义全局变量,事件发送器
FlutterEventSink _eventSink;
5: 实现代理方法绑定事件发送器:
- (FlutterError*)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink)eventSink {
_eventSink = eventSink;
return nil;
}
6: 实现用来取消eventChannel的代理方法:
- (FlutterError*)onCancelWithArguments:(id)arguments {
_eventSink = nil;
return nil;
}
7: 在需要发送数据的地方用事件发送器发送消息:
_eventSink(@"message");
网友评论