CSDN@为什么我们应该使用 Flutter?
本文插图
作者 | 杜洁鹏
封图 | Flutter GitHub README
出品 | CSDN(ID:CSDNnews)
Flutter 是 Google 提供的新一代跨平台方案 , 随着 Google 在 IO19 宣布 Flutter 支持 Web 平台 , 就标志着 Flutter 已经全面持所有平台(目前 Windows 的只是早期预览版本 , 未来有可能会支持 UWP) , 它提供了非常友好的文档来帮助各端的同学迅速地进入到 Flutter 的海洋中 。 同时它的完全开源也让其有了更快的迭代 , 更好的生态 。
感兴趣的同学可以关注 GitHub:https://github.com/flutter/flutter
Flutter 的优势
相比较目前的混合开发方案 , Flutter 提供了大量的文档 , 能非常快速且友好的让你加入到这个大家庭 。 它并不止 WebView , 也用通过解释 JS 后去操作系统的原生控件 , Flutter 核心只有一层轻量的 C/C++代码(Engine) , Flutter 在 Dart 中实现了其他大部分系统(组合、手势、动画、框架、widget 等) , 因此 , 开发人员可以轻松地进行读取、更改、替换或移除等操作 。 这为开发人员提供了对系统的巨大可定制性 。
本文插图
针对移动端 , Flutter 提供了符合 Android 风格的 Material 和符合 iOS 风格的 Cupertino , 同时对不同平台也做了不同的兼容 , 更好地保留了平台的特性 , 如 ScrollView , 在 iOS 平台中 , 滑动的时候就拥有回弹的效果 , 在 Android 平台中 , 表现出来的就是阻尼的效果 。 当然 , 有的时候 Flutter 的 Framework 提供的 UI 格并不能满足我们的需求 , 我们还可以去自定义控件 。
Flutter 在开发中支持 Hot Reload , 相比较原生 , 这样的方式能更高效地开发 , 真正做到所写即所得 。
Flutter 与 Native 通讯
使用平台通道在客户端(Flutter UI)和宿主(平台)之间传递消息 。
本文插图
Flutter Platform Channel
Flutter 定义了三种不同类型的 Channel , 它们分别是:
- BasicMessageChannel:传递字符串或半结构化信息;
- MethodChannel:传递方法调用(method invocation);
- EventChannel:数据流(event streams)通讯 。
- name:String 类型 , 表示 channel 的名字 , 全局唯一;
- codec:MessageCodec 或 MethodCodec 类型 , 消息的编码解码器;
- binaryMessenger:BinaryMessenger 类型 , 用于发送数据 。
Flutter 中可能存在多个 Channel , Channel 之所以使用 name 来区分 , 当从 Flutter 端发送到 Platform 端时 , 需要传 channel name , 之后通过 name 找到对应的 handle 来处理 。
codec:
Flutter 定义了两种 Codec —— MessageCodec 和 MethodCodec , 从而用来快速地编码和解码 。
本文插图
binaryMessenger:
本文插图
虽然三种 Channel 各有用途 , 但是他们与 Flutter 通信的工具却是相同的 , 均为 BinaryMessager 。
BinaryMessenger 是 Platform 端与 Flutter 端通信的工具 , 其通信使用的消息格式为二进制格式数据 。 当我们初始化一个 Channel , 并向该 Channel 注册处理消息的 Handler 时 , 实际上会生成一个与之对应的
推荐阅读
- 军事精彩资讯▲我们一直在等你返航!,81192
- 瞭望智库:非常时期!中国为什么不像美国那样给民众发钱?
- 『黑子远投三分』榜首是我们的青春,NBA历史上哪对组合助攻最多?保罗+傻芬不大行
- 『杨洋带你看车』买车尽量别碰的5大汽车品牌
- [海外网]特朗普又夸普京了:如果我们开口要物资,他会答应的
- 「电商科技馆」3能带来超越游戏手机的体验?这些细节就是关键,为什么iQOO
- 为什么帕萨特碰撞之后仍畅销?
- 欧洲时报■在英中国留学生疫情日记:我们守望相助
- 「鱼远行」我们只看到美国手忙脚乱,却没看到这才是他强大之处,病毒席卷下
- 「文娱马后炮」为什么感觉王者荣耀鲁班欠揍?求大神?
