Flutter是一个新的用于构建跨平台手机App的SDK。
手机原生APP
- 苹果的 iOS app - Objective-C
- 谷歌的Android app - Java
优势
最佳原生用户体验
我们需要做的事
选择一个阵营 (iOS or Andriod)
学习掌握一门语言
然而,来自 “两个阵营” 的开发者渐渐发现:
- 客户不想付所有钱,在最终得到一个不太感兴趣的应用程序
- 我们希望快速构建应用,但我们不能在UI质量或性能上妥协
- 同时为 “两个阵营” 设计统一的UI会得到最高一致性
我们开始意识到采用良好的移动跨平台解决方案的好处
跨平台UI框架方案
代表: 基于WebView的Cordova框架
优势
跨平台
现代web开发成果: 控件库,自动化测试工具..
web开发技术栈
不足
UI渲染效率 & 执行效率
厂商定制与兼容性问题导致难以达到一致体验
原生功能(手势,蓝牙,摄像头..) 需要用原生代码实现
响应式视图框架
代表: React Native
优势
将UI渲染交还给系统, 加快响应速度
web技术 HTML+JS
不足
和系统的控件集强耦合
可能需要处理不同系统的差异导致跨平台特性打折扣
我们渐渐发现,一款APP之所以能够成功,需要包含以下特点:
- 成功的产品需要出现在两个移动平台上
- 不同平台同一应用设计的相似性; 不同应用的差异性
- 品牌化的自定义UI是王道
Flutter 出现了 使用 Dart 作为开发语言, 它唯一提供响应式视图而不需要 JavaScript 桥接器的移动 SDK
Flutter 革命
- 重写UI控件
- UI渲染逻辑使用Dart语言实现,执行效率比JS高得多
- 渲染引擎依靠跨平台Skia图形库实现
- 依赖图形绘制接口,最大程度上保证不同平台、不同设备的体验一致性
渲染库
在Flutter界面渲染过程分为三个阶段:布局、绘制、合成, 布局和绘制在Flutter框架中完成,合成则交由引擎负责
控件库
Flutter的控件库提供了非常丰富的控件,包括最基本的文本、图片、容器、输入框和动画等等. 在Flutter中”一切皆是控件”,通过组合、嵌套不同类型的控件,就可以构建出任意功能、任意复杂度的界面
Flutter 2019 发展路线
- 稳定迭代,更加易用
- 生态系统: 提升插件质量
- 超越mobile: 键鼠支持,探索桌面端
- 工具:IDE支持