对于跨平台的方案来说通信是其非常重要的一个基础,官网贴了一张很直观的图,让我们可以了解其架构。
整个插件的消息和响应以异步的方式进行传递,以确保用户界面不会卡顿;
从上述的架构图中,其实已经很明确的知道了在 Dart 端使用 MethodChannel API 来发送消息或调用对应的方法,而 Native 平台上 Android 的 MethodChannel 和 iOS 的 FlutterMethodChannel 处理了接收调用和返回结果,这一过程也可以反向调用,即 Native 主动的给 Dart 端发送消息,如果你有兴趣不妨看一个插件的实现 https://pub.dartlang.org/packages/quick_actions,它很直白的实现了这样的过程。对于数据转换的过程,如果你了解过 JavaScriptCore 和 Objective-C 的互转就能明白,比如 JavaScript 端的 string 转换成 Objective-C 的NSString,number 转换成 NSNumber。对于 Dart 而言也有这样数据转换的对照表,你可以参