Flutter
Flutter是一个由谷歌开发的开源移动应用软件开发工具包,用于为Android、iOS、Windows、Mac、Linux、Google Fuchsia开发应用[5]。
![]() | |
原作者 | |
---|---|
開發者 | Google与社区 |
初始版本 | Alpha (v0.0.6) / 2017年5月[1] |
穩定版本 | |
源代码库 | ![]() |
编程语言 | C、C++、Dart[4] |
系統平台 | Android、iOS、Google Fuchsia、Web平台、Windows、macOS和Linux |
类型 | 应用框架 |
网站 | flutter |
Flutter第一个版本支持Android操作系统,開發代號称作“Sky”。 它于2015年4月的Flutter开发者会议上被公布[6],宣称其目标为实现120FPS的渲染性能[7]。在上海Google Developer Days的主题演讲中,Google宣布了Flutter Release Preview 2,这是Flutter 1.0之前的最后一个重要版本。2018年12月4日,Flutter 1.0在Flutter Live活动中发布,是该框架的第一个“稳定”版本。[8]2019年12月11日,在Flutter Interactive活动上发布了Flutter 1.12,宣布Flutter是第一个为环境计算设计的UI平台[9]。
框架组织
Flutter的主要组成部分包括:
- Dart平台
- Flutter引擎
- 基础库
- 定制化设计语言的组件
Dart平台
Flutter是使用Dart语言编写,并利用该语言的许多高级功能。[10]
在Windows、macOS和Linux上,Flutter在Dart虚拟机中运行,该虚拟机具有即時編譯执行引擎。在编写和调试应用时,Flutter使用即时编译功能进行“热重载”,可以将对源文件的修改注入正在运行的应用中。Flutter通过支持有状态的热重载来扩展此功能,在大多数情况下,对源代码的更改可以立即在运行的应用中反映出来,而无需重新启动或丢失任何状态。[11]Flutter实现的此功能已广受赞誉。
Flutter应用的发布版本在Android和iOS上都进行了提前(AOT)编译[12],使Flutter在移动设备上可以高性能地运行。
Flutter引擎
Flutter的引擎主要使用C++开发,通过Google的Skia图形库提供底层渲染支持,亦提供平台相关的SDK,例如Android和iOS[10]。Flutter引擎是用于托管Flutter应用的可移植的运行环境。它实现了Flutter的核心库,包括动画和图形、文件和网络I/O、可访问性支持、插件架构以及Dart运行环境和编译工具链。大多数开发人员将通过Flutter框架与Flutter进行交互,该框架提供了一个现代、响应式的框架,以及一组丰富的平台、布局和基础组件。
Hello World示例
一个Flutter中的Hello World程序如下所示:
import 'package:flutter/material.dart';
void main() => runApp(HelloWorldApp());
class HelloWorldApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Hello World App',
home: Scaffold(
appBar: AppBar(
title: Text('Hello World App'),
),
body: Center(
child: Text('Hello World'),
),
),
);
}
}
参考文献
- Chris Bracken. . GitHub. [2018-08-08]. (原始内容存档于2019-02-05).
- . flutter.dev. [2021-01-26]. (原始内容存档于2020-05-08).
- . GitHub. [2018-04-03]. (原始内容存档于2019-02-16).
- . [2018-08-08]. (原始内容存档于2018-08-09).
- . Ars Technica. [2018-04-03]. (原始内容存档于2019-09-26).
- . [2020-06-12]. (原始内容存档于2020-06-14).
- Amadeo, Ron. . Ars Technica. 1 May 2015 [2018-04-03]. (原始内容存档于2015-05-06).
- . Appetiser Apps. [2018-12-21]. (原始内容存档于2019-03-12) (英语).
- . Flutter blog. [2019-12-11]. (原始内容存档于2019-12-11) (英语).
- . flutter.io. [2017-12-13]. (原始内容存档于2017-12-13) (英语).
- Lelel, Wm. . HackerNoon. 26 February 2018 [5 December 2018]. (原始内容存档于2019-11-16).
- stephenwzl. . ProAndroidDev. 2018-08-01 [2018-12-06]. (原始内容存档于2020-06-09).
- . [2017-12-13]. (原始内容存档于2017-12-13) (英语).
- . flutter.dev. [2017-12-13]. (原始内容存档于2020-06-16) (英语).
- . flutter.dev. [2017-12-13]. (原始内容存档于2020-06-16) (英语).
- . developer.apple.com. [2019-10-08]. (原始内容存档于2020-11-28) (英语).