关于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 '';
}

所以,在这里我们传递了上述的参数。

0
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3274 问题

查看课程