大蜕

关于 Flutter 的一些小事

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支持