关于basicMessageChannelPlugin.setMessageHandler
来源:11-8 Flutter通信机制&Dart端实现【全栈皆宜】

慕无忌King
2021-01-08
如题,源码中的setMessageHandler
方法如下
void setMessageHandler(Future<T> Function(T message)? handler) {
if (handler == null) {
binaryMessenger.setMessageHandler(name, null);
} else {
binaryMessenger.setMessageHandler(name, (ByteData? message) async {
return codec.encodeMessage(await handler(codec.decodeMessage(message)));
});
}
}
想知道,怎么根据这个源码写出项目中的
// 使用BasicMessageChannel接收来自Native的消息,并向Native回复
_basicMessageChannelPlugin.setMessageHandler((String message) => Future<String>((){
return '';
}));
这段代码。老师可否将一些改如何阅读Dart源码的方法和技巧。
写回答
1回答
-
CrazyCodeBoy
2021-01-10
先看源码方法的入参,对于setMessageHandler来说它的入参是:
Future<T> Function(T message)? handler
然后观察的的参数类型:
从这个参数上看它的类型是个方法
然后看方法的返回值:是个Future
在看方法的入参:是个T message
这样分析下来,我们如果要使用setMessageHandler那么给他设置的参数要符合上述的要求:
(String message) => Future<String>((){ return ''; }
所以,在这里我们传递了上述的参数。
00
相似问题