1.都2019了,你还没听说过Flutter?

1,722 阅读3分钟

目录传送门:《Flutter快速上手指南》先导篇

1. 什么是 Flutter?

Flutter 是一套由 Google 主导开发的全新的、跨平台的移动应用开发框架。

Flutter 使用简洁的 Dart 语言来进行开发工作。

它是真正意义上的原生跨平台开发框架,它完美的做到了一套代码,即可在 Android、iOS 两大主流移动平台运行。

Google 最神秘的、全新的 大一统 操作系统(据说它有取代 Android 等移动平台的计划😨)—— Fuchsia,就使用 Flutter 来作为其系统平台的应用开发框架。

近两年 Google 在花费很多资源投入到 Flutter 的开发和推广工作中,难道是为 Fuchsia 的面世而铺路?🤔

这是目前 Flutter 的架构图:

从图中可以清晰的看到,从下到上:

  • Embedder,对接平台嵌入层

  • Engine,由 c/c++ 编写的 Flutter 引擎

  • Framework,由 Dart 编写的 Framework 框架

Flutter 之所以能够在原生层面上做到跨平台,是因为它通过在底层使用通用的图形绘制库 Skia(绘制内容会被通过 OpenGL提供给 GPU 渲染),封装了一套全新的、独立的 UI 框架,即 Flutter。

2. Flutter 的特性

2.1 好的方面

  1. Flutter 可以实现一套代码,同时运行在 Android、iOS 两套移动设备上。

  2. Flutter 内部实现了一套自有的 UI 渲染引擎,并且提供了一套完整的、丰富的、无关平台的 UI 库。 相比其它的跨平台方案,Flutter 显然具有更高的性能,更加贴合原生。

  3. 由于 Flutter 应用层使用了 Dart 语言来进行开发。 由于 Dart 同时支持 AOT(Ahead Of Time,预编译)JIT(Just In Time,即时编译) 两种运行模式, 所以在开发阶段,Flutter 通过 JIT 模式来获得 Hot-reload 的特性。 而在发布阶段,Flutter 通过 AOT 模式预编译获得高性能的应用程序包。

  1. 热度持续上升的社区活跃度。这意味着,越来越多的开发者投身到 Flutter 的建设中,这让开发者对其未来的稳定性和丰富性提供了信心。 这张图显示了 Flutter 在 StackOverflow 上的活跃趋势。

  2. 最新的 Flutter 1.2 版本已经支持了 Android 的 AppBundle,这意味着热更新,和更小的安装包成为了可能。

2.2 不好的方面

  1. 由于 Flutter 是纯自建的 UI 库,如果一些自定义的 UI 库使用了其中一个平台特性, 那么就会造成另一个平台无法使用的情况。

因此,开发者必须时刻谨慎的选择和编写自定义的 Widget。

  1. 也许由于 Flutter 刚刚出现,社区相关的工具和库没有很丰富。 有时候出现的诸如布局等错误时,会让人感到很困惑,并且你可能很难在 Google 上搜索到有用的信息。

  2. 目前 Debug 还不是最好用的时候,至少和传统的原生 Debug 相比,还有很大的提高空间。

  3. 相比于 Android 的 xml 创建 UI,目前 Flutter 所提供的 UI 创建方式不是直观。开发者需要较长的一段时间去适应。

    面对较复杂的布局,开发者必须时刻保持清醒的意识,不断的合理的划分你的代码。

总之,Flutter 对于移动端开发效率的提升是不言而喻的,在很多场景下,它使得开发人员只用编写一套代码,就能在 Android 和 iOS 上同时运行。 而且,还能维持较高的性能水平,这是让人喜爱的。还能说什么呢,Flutter 值得移动开发者一试的。

目录传送门:《Flutter快速上手指南》先导篇

如何找到我?

传送门:CoorChice 的主页

传送门:CoorChice 的 Github