Flutter中的EventChannel的使用場景:從Native端向Flutter端發(fā)送消息耍铜。
下面總結(jié)一下具體的使用步驟葵腹。
Dart端非常簡單只有兩步:
1:初始化eventChannel念秧。
static const EventChannel eventChannel = EventChannel('channelName');
2: initstate方法里綁定回調(diào)函數(shù):
eventChannel.receiveBroadcastStream().listen(_onEvent, onError: _onError);
并實(shí)現(xiàn)(_onEvent和_onError)兩個(gè)綁定的方法:
void _onEvent(Object event) {
setState(() {
//do something
});
}
void _onError(Object error) {
setState(() {
//do something
});
}
iOS端步驟略多:
1: 添加協(xié)議:
<FlutterStreamHandler>
2: 創(chuàng)建eventchannel:
FlutterEventChannel* channel = [FlutterEventChannel eventChannelWithName:@"channelName" binaryMessenger:controller];
3: 設(shè)置channel代理:
[chargingChannel setStreamHandler:self];
4: 定義全局變量安聘,事件發(fā)送器
FlutterEventSink _eventSink;
5: 實(shí)現(xiàn)代理方法綁定事件發(fā)送器:
- (FlutterError*)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink)eventSink {
_eventSink = eventSink;
return nil;
}
6: 實(shí)現(xiàn)用來取消eventChannel的代理方法:
- (FlutterError*)onCancelWithArguments:(id)arguments {
_eventSink = nil;
return nil;
}
7: 在需要發(fā)送數(shù)據(jù)的地方用事件發(fā)送器發(fā)送消息:
_eventSink(@"message");