Flutter 是Google创建的开源 UI 软件开发工具包。它用于从单个代码库为任何Web浏览器开发跨平台应用程序,[4] Fuchsia、Android、iOS、Linux、macOS和Windows。[5]首次描述于 2015 年,[6] [7] Flutter 于 2017 年 5 月发布。[1]

历史
Flutter 的第一个版本被称为“Sky” [8],运行在Android 操作系统上。它在 2015 年Dart开发者峰会[9]上亮相,明确表示能够以每秒120 帧的速度进行一致渲染。[10] 2018 年 9 月在上海举行的Google 开发者日主题演讲期间,Google 宣布了 Flutter Release Preview 2,这是 Flutter 1.0 之前的最后一个主要版本。2018年12月4日,Flutter 1.0在Flutter Live活动上发布,标志着该框架的第一个稳定版本。2019年12月11日,Flutter 1.12在Flutter Interactive活动上发布。[11]

2020 年 5 月 6 日,Dart 软件开发工具包 ( SDK ) 2.8 版和 Flutter 1.17.0 发布,增加了对Metal API的支持,使 iOS 设备上的性能提高了约 50%,以及新的 Material 小部件和网络跟踪开发工具。

2021 年 3 月 3 日,Google 在 Flutter Engage 在线活动中发布了 Flutter 2。此次重大更新带来了对基于 Web 的应用程序的官方支持,包括新的 Canvas Kit 渲染器和 Web 特定小部件、对Windows、macOS和Linux的早期访问桌面应用程序支持以及改进的添加到应用程序 API。[12]该版本还利用了具有null-safety功能的 Dart 2.0 ,这导致了许多重大更改和许多外部包的问题;然而,Flutter 团队提供了缓解这些问题的说明和工具。[13]

2021年9月8日,Google发布了Dart 2.14和Flutter 2.5。此次更新带来了 Android 全屏模式的改进以及名为 Material You的 Google Material Design最新版本。Dart 收到了两个新的更新,标准化了lint条件并将对Apple Silicon 的支持标记为稳定。[14] [15]

2022年5月12日,谷歌宣布发布Flutter 3和Dart 2.17。此更新将支持的平台总数扩大到六个,包括对 Intel 和 Apple Silicon 处理器上的 Linux 和 macOS 的稳定支持。[16]

2022 年 8 月 30 日,Flutter 3.3 发布。此版本具有Objective-C和Swift互操作性以及名为“Impeller”的新渲染引擎的早期预览,该引擎旨在减少着色器编译引起的卡顿。[17]

2023 年 1 月 25 日,Flutter 3.7 发布。

框架架构
Flutter 的主要组件包括:

飞镖平台
颤振引擎
基金会图书馆
设计特定的小部件
Flutter开发工具(DevTools)
Dart 语言
Flutter 应用程序是用Dart语言编写的,并利用了该语言的许多更高级的功能。[18]

为了获得更好的性能,所有平台上的 Flutter 应用程序的发布版本都使用提前(AOT)编译,[19]除了在 Web 上,其中代码被转换为JavaScript。[20]

Flutter继承了Dart的Pub 包管理器和软件存储库,允许用户发布和使用自定义包以及Flutter专用的插件。[21]

颤振引擎
Flutter 的引擎主要用C++编写,使用 Google 的Skia图形库或自定义的“Impeller”图形层提供低级渲染支持。[17]此外,它还与特定于平台的SDK(例如Android和iOS提供的 SDK)接口,以实现可访问性、文件和网络 I/O、本机插件支持等。[18]

基础库
Foundation 库用Dart编写,提供了用于使用 Flutter 构建应用程序的基本类和函数,例如与引擎通信的API 。[18] [22]

设计特定的小部件
Flutter框架包含两套符合特定设计语言的小部件: Material Design小部件实现了Google的同名设计语言, Cupertino小部件实现了Apple的iOS 人机界面指南。[18] [23] [24] [25] Flutter 允许开发人员在任一平台上使用任意一组小部件,即甚至 Android 上的 Cupertino 小部件。第三方软件包可用于自动调整应用程序的设计以适应当前操作系统。[26]

IDE支持
Flutter 通过插件维持对以下IDE和编辑器的官方支持:

智能IDEA
安卓工作室
视觉工作室代码
Emacs
其他 IDE 可以与社区支持的插件一起使用,或者通过命令行使用 Flutter 工具。[10]市场上出现了一些工具,它们已经开始利用官方的 Flutter IDE 框架并提供定制的图形使用界面构建器。

小部件
Flutter 程序中的基本组件是“小部件”,它又可以由其他小部件组成。小部件通过类似于React 的实现来描述 UI 元素的逻辑、交互和设计。与其他跨平台工具包(例如React Native和Xamarin)使用本机平台组件绘制小部件不同,Flutter 以每个像素为基础渲染小部件本身。

小部件有两种基本类型:无状态和有状态。无状态小部件仅在其输入发生变化时更新,这使得它们非常高效,而有状态小部件可以调用该setState()方法来更新内部状态并重绘。[27]

尽管小部件是构建 Flutter 应用程序的主要方法,但也可以绕过它们,直接在画布上绘图。此功能偶尔被用来在 Flutter 中实现游戏引擎。[28]

flutter是什么?