Flutter 框架简介

353 阅读5分钟

介绍

Flutter 是由 Google 开发和提供支持的开源框架。前端和全栈开发人员使用 Flutter 为具备单一代码库的多个平台构建应用程序的用户界面(UI)。在 2018 年推出时,Flutter 主要支持移动应用程序开发。Flutter 目前支持在六个平台上进行应用程序开发:iOS、Android、Web、Windows、MacOS 和 Linux。

跨平台自绘引擎

  1. Flutter 与用于构建移动应用程序的其他大多数框架不同,因为 Flutter 既不使用 WebView,也不使用操作系统的原生控件。
  2. 相反,Flutter 使用自己的高性能渲染引擎来绘制 Widget(组件)。这样不仅可以保证在 Android 和iOS 上 UI 的一致性,也可以避免对原生控件依赖而带来的限制及高昂的维护成本。
  3. Flutter 底层使用 Skia 作为其 2D 渲染引擎,Skia 是 Google的一个 2D 图形处理函数库,包含字型、坐标转换,以及点阵图,它们都有高效能且简洁的表现。
  4. Skia 是跨平台的,并提供了非常友好的 API,目前 Google Chrome 浏览器和 Android 均采用 Skia 作为其 2D 绘图引擎。

高性能

Flutter 高性能主要靠两点来保证:

  1. Flutter App 采用 Dart 语言开发。Dart 在 JIT(即时编译)模式下,执行速度与 JavaScript 基本持平。但是 Dart 支持 AOT,当以 AOT 模式运行时,JavaScript 便远远追不上了。执行速度的提升对高帧率下的视图数据计算很有帮助。
  2. Flutter 使用自己的渲染引擎来绘制 UI ,布局数据等由 Dart 语言直接控制,所以在布局过程中不需要像 RN 那样要在 JavaScript 和 Native 之间通信,这在一些滑动和拖动的场景下具有明显优势,因为在滑动和拖动过程往往都会引起布局发生变化,所以 JavaScript 需要和 Native 之间不停地同步布局信息,这和在浏览器中JavaScript 频繁操作 DOM 所带来的问题是类似的,都会导致比较可观的性能开销。

采用 Dart 语言开发

  1. 性能:Dart 语言是一种 JIT(Just-in-Time)和 AOT(Ahead-of-Time)两种编译模式兼备的语言,它可以在运行时进行 JIT 编译,也可以在预编译时进行 AOT 编译。这种编译模式可以带来更好的性能和更快的启动时间,特别是在移动应用领域,性能是非常重要的。
  2. 可维护性:Dart 语言具有静态类型检查的特性,可以在编译时检查类型错误和潜在的运行时错误,减少了代码的 bug 数量。同时,Dart 语言还提供了一些现代化的语言特性,比如异步编程和函数式编程等,可以提高代码的可读性和可维护性。
  3. 开发效率:Dart 语言具有一些便捷的语言特性,比如可选参数、命名参数、扩展方法等,可以提高开发效率,同时也提供了一些有用的工具和库,比如 Flutter Doctor、Flutter Inspector、Flutter Widgets 等,可以帮助开发者更快速地进行开发、调试和测试。
  4. 移动应用开发:Dart 语言和 Flutter 框架的设计都是为了更好地支持移动应用开发,比如 Flutter 的 Widget 是基于现代的硬件加速图形库 Skia 实现的,Dart 语言也提供了一些基于异步编程的库和工具,可以帮助开发者更好地管理移动应用的资源和网络请求。
  5. 类型安全和空安全:由于 Dart 是类型安全的语言,且 2.12 版本后也支持了空安全特性,所以 Dart 支持静态类型检测,可以在编译前发现一些类型的错误,并排除潜在问题,这一点对于前端开发者来说可能会更具有吸引力。与之不同的,JavaScript 是一个弱类型语言,也因此前端社区出现了很多给 JavaScript 代码添加静态类型检测的扩展语言和工具,如:微软的 TypeScript 以及Facebook 的 Flow。相比之下,Dart 本身就支持静态类型,这是它的一个重要优势。

综上所述,Dart 语言具有良好的性能、可维护性和开发效率,同时也很适合移动应用开发,这些特点使得它成为了 Flutter 开发的理想选择。

框架结构

Flutter框架结构可以分为三部分,分别是:Flutter Engine、Flutter Framework 和 Flutter Plugins。

  1. Flutter Engine:是 Flutter 的核心引擎,其主要作用是处理渲染、绘制、布局和响应用户输入等底层操作。Flutter Engine 由 Dart 虚拟机、Skia 图形引擎和 C/C++ 代码组成,它是 Flutter 应用程序能够运行的基础。
  2. Flutter Framework:是 Flutter 的 UI 库,提供了丰富的可重用组件,帮助开发者快速构建应用程序。Flutter Framework 使用了现代响应式编程模型,可以轻松的实现复杂的 UI 交互效果。
  3. Flutter Plugins:是 Flutter 的插件系统,它可以让开发者使用第三方库和原生代码扩展应用程序功能。Flutter 插件能够与 Flutter Engine 和 Flutter Framework 进行通信,使得 Flutter 应用程序可以轻松地集成其他平台的功能。