フラッターはすぐにiOSとAndroidの上の高品質なネイティブ・ユーザー・インターフェースを構築することができ、GoogleはモバイルUIフレームワークを立ち上げ、使用する開発言語はダートです。フラッターは、既存のコードで動作することができます。世界では、フラッターは、開発者や組織の成長数で使用されている、そしてそれは完全に無料、オープンソースです。
フラッタ機能
1.迅速な開発
ミリ秒の熱過負荷は、変更後に、アプリケーション・インターフェースはすぐに更新されます。数分でネイティブインターフェイスを構築豊富な、完全にカスタマイズ可能なウィジェットを使用します。
2.表現とフレキシブルUI
クイックリリースは、ネイティブの経験の機能に焦点を当てています。階層化アーキテクチャは、非常に高速なレンダリングや表現力、柔軟な設計を可能にする、完全にカスタマイズすることができます。
3.ネイティブパフォーマンス
フラッターは、iOSとAndroidのネイティブアプリケーションと同様の性能を達成することができ、このようなスクロール、ナビゲーション、アイコン、フォントなど多くのコアウィジェットを、含まれています。
しかし、本当の問題があります:私たちはネイティブのiOSとAndroid SDKを持っていた場合、必要なフラッターのバージョンならば、我々は再びゼロから再構築する必要がありますか?
オリジナルのSDKインタフェースはフラッターによって呼び出すことができるように、答えが必要とされていない、フラッターは、ネイティブコードと対話することができ、それは、ネイティブコードのプラグインの開発をサポートしています。
ネイティブ・コード・プラグイン開発フラッタに基づきます
まず、クロスプラットフォームの原則はフラッターを紹介します
フラッター以下は、クロスプラットフォームの原則の説明については、公式ウェブサイトで、詳細は、こちらをクリック。
私たちは、チャートで見ることができるのiOS / Androidはまた戻っフラッターにデータをMethodChannelできるのに対し、フラッターは、MethodChannelデータでのiOS / Androidのに渡されます。
そこもう一つの問題がある:フラッターとiOSで使用され、Androidのさまざまな開発言語は、どのようなデータの種類ごとにそれを渡すことができますか?
上面这张表罗列了 Flutter 使用的 Dart 语言与 iOS/Android 可以传递的数据类型,从表中我们可以看到,它只能传递一些基本的数据类型,比如 bool,int,double,高级的就是 String,List,Map,而且表中指明了在各平台对应的数据类型转换:如 Dart 的 Map 对应 Android 的 HashMap,对应 iOS 的 NSDictionary 。
二、插件的基本结构介绍
在终端输入下面的命令,等待一分钟左右,Flutter 就会把整个项目框架搭建好。
Flutter Plugin 可简单理解为上图中的 Flutter wrapper , iOS wrapper , Android wrapper 三个绿色部分,图中的双向箭头表明了代码的调用逻辑,这就是为什么说 Flutter 的插件可以跨平台使用。
如何确定 Flutter wrapper 调用的是 iOS 的接口还是 Android 的接口?答案是由运行的设备决定,即运行 iOS 设备,Flutter wrapper 自动调用 iOS wrapper 的接口,Android 也是这样。
当执行完创建 Plugin 的命令之后,Flutter 会负责在当前目录创建一个 Plugin项目,具体的目录含义如下:
android/ : Android wrapper
ios/ :iOS wrapper
lib/ :Flutter wrapper
example/ :demo 根目录
example/android/ :Android project
example/ios/ :iOS project
example/lib/ :Flutter app
第一次运行需要使用终端进入 Plugin 项目路径下执行下面命令获取 Flutter 的依赖。
三、代码层面的交互演示
MethodChannel 的创建
Flutter 通过 MethodChannel 与 iOS/Android 进行交互,下面的代码展示了三个平台如何创建 MethodChannel 对象。
通过相同字符串创建的 MethodChannel 就可以进行跨平台的数据交互。
当 Flutter 调用接口触发原生代码的时候:
iOS 会触发的方法
Android 会触发的方法
两个平台一样,都会获取 MethodCall 对象 和 FlutterResult 对象。
MethodCall 对象保存了方法名和参数,通过方法名确定调用具体的方法,通过参数获取具体的数据。
FlutterResult 对象可以将数据返回给 Flutter,下面会讲解该对象的使用。
Flutter 与 iOS/Android 数据交互总共三种方式:
1.iOS/Android 不给 Flutter 返回数据
2.iOS/Android 通过 FlutterResult 给 Flutter 返回数据
3.iOS/Android 通过 MethodChannel 给 Flutter 返回数据
通过 FlutterResult 和 MethodChannel 都可以给 Flutter 返回数据,但是两者有所区别:
FlutterResult 适用于能够快速返回数据的接口,比如说 IM 连接的回调或者连接服务器的回调。
MethodChannel 适用于不确定什么时间响应数据的接口,比如说收到消息的回调。
MethodChannel 可以替代 FlutterResult 返回数据,但是 FlutterResult 无法替代 MethodChannel。
为了让开发者和更多平台便捷的使用融云IM 功能,融云 IM Flutter 已经开源,欢迎大家体验使用。
GitHub 地址:https://github.com/rongcloud/rongcloud-im-flutter-sdk
Flutter 仓库地址:https://pub.dev/packages/rongcloud_im_plugin
融云IM商用版年中大促火爆进行中
从 7 月 1 日——8 月 31 日,融云年中大促正在火热进行中,IM 商用版预存最低享 7 折,更多详情可以点击登录融云官网活动页面查看。