Flutter
和移动端的原生代码交互主要是依赖MethodChannel
实现.通过在其中一边定义CallHandler
,另一边调用invokeMethod
可以实现代码的相互调用,并获得结果
以下为一个简单的例子:
我们新增两组channel,msgbox用于原生调用flutter代码,device用于flutter调用原生代码,需要注意的是这里的调用都是可以通过回调获取返回值的(使用result.success
或result.error
),这里展示的用法是为了展示互相调用的可能性
1 | /** |
1 | /** |
注意:
我们可以在不同的代码位置声明相同通道的methodchannel,并且通过invokeMethod
进行跨平台的调用。但是setCallHandler
只能设置一次(多次调用存在覆盖关系),因此不能通过在不同页面通过设置对相同通道的回调实现一次调用多次回调的效果。建议在VM中处理通道的回调,并且将回调的数据通过flutter内的事件总线或数据绑定去更新各个页面