强力推荐:一个好用的Flutter与原生应用通讯的开源框架!
Posted 开发者全社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了强力推荐:一个好用的Flutter与原生应用通讯的开源框架!相关的知识,希望对你有一定的参考价值。
链接:https://juejin.im/post/5e6f23eef265da574f355950
Flutter的产品定义是一个高性能的跨平台的移动UI框架,能够用一套代码同时构建出android/ios/Web/MacOS应用。作为一套,它不具备一些系统的接口,自然还是避免不了跟原生打交道。于是乎,它提出了名为
的东西,用于flutter和原生灵活的交换数据。以下为了描述方便,用Android代指原生。
燃鹅,燃鹅,燃鹅,它只支持一些基础的数据类型和数据结构的传输,例如bool/int/long/byte/char/String/byte[]/List/Map等。
因此,当你想传输复杂点的数据,你只能包装成Map,类似这样:
await _channel.invokeMethod('initUser',
{'name': 'Oscar', 'age': 16, 'gender': 'MALE', 'country': 'China'});
然后再在Android层hard code,解析出不同的key对应的不同数据。如果你是一个纯fluter项目,且以后也没有和原生打交道的打算,或者只是需要进行简单的交互,那这种做法也无可厚非。而当你的项目已经有很大的一部分原生代码或者你需要使用第三方不支持flutter的lib库的时候,就意味着你需要编写大量向上面那样的模板代码。可见效率低下,且可维护性差。这时,你会想,能传输对象就好了!
抱歉,没门,只能给你一个尴尬又不是礼貌的危笑。当然,也不是不可以,我们可以在原生上层把对象序列化成json对象,然后在flutter层再把json转成flutter的对象,同样效率很差。
FIDL是什么