Flutter
Flutter是一個由谷歌開發的開放原始碼跨平台應用軟件開發工具包,用於為Android、iOS、Windows、macOS、Linux Desktop、Google Fuchsia開發應用[4]。
原作者 | |
---|---|
開發者 | Google與社區 |
首次發布 | Alpha (v0.0.6) / 2017年5月[1] |
當前版本 |
|
源代碼庫 | |
編程語言 | Dart[3] |
平台 | Android、iOS、Google Fuchsia、Web平台、Windows、macOS和Linux |
類型 | 應用框架 |
許可協議 | |
網站 | flutter |
Flutter第一個版本支持Android操作系統,開發代號稱作「Sky」。 它於2015年4月的Flutter開發者會議上被公布[5],宣稱其目標為實現120FPS的渲染性能[6]。在上海Google Developer Days的主題演講中,Google宣布了Flutter Release Preview 2,這是Flutter 1.0之前的最後一個重要版本。2018年12月4日,Flutter 1.0在Flutter Live活動中發布,是該框架的第一個「穩定」版本。[7]2019年12月11日,在Flutter Interactive活動上發布了Flutter 1.12,宣布Flutter是第一個為環境計算設計的UI平台[8]。2022年5月12日,在 Google I/O 2022 發布了 Flutter 3[9],正式支援了 Windows、macOS、Linux 等操作系統。
框架組織
編輯Flutter的主要組成部分包括:
Dart平台
編輯Flutter是使用Dart語言編寫,並利用該語言的許多高級功能。[11]
在Windows、macOS和Linux上,Flutter在Dart虛擬機中運行,該虛擬機具有即時編譯執行引擎。在編寫和調試應用時,Flutter使用即時編譯功能進行「熱重載」(Hot Reload),可以將對源文件的修改注入正在運行的應用中。Flutter通過支持有狀態的熱重載來擴展此功能,在大多數情況下,對源代碼的更改可以立即在運行的應用中反映出來,而無需重新啟動或丟失任何狀態。[12]Flutter實現的此功能已廣受讚譽。
Flutter應用的發布版本在Android和iOS上都進行了提前(AOT, Ahead Of Time)編譯[13],使Flutter在移動設備上可以高性能地運行。
Flutter 引擎
編輯Flutter的引擎主要使用C++開發,通過Google的Skia圖形函式庫提供底層渲染支持,亦提供平台相關的SDK,例如Android和iOS[11]。Flutter引擎是用於託管Flutter應用的可移植的運行環境。它實現了Flutter的核心程式庫,包括動畫和圖形、文件和網絡I/O、可訪問性支持、插件架構以及Dart運行環境和編譯工具鏈。大多數開發人員將通過Flutter框架與Flutter進行交互,該框架提供了一個現代、響應式的框架,以及一組豐富的平台、布局和基礎組件。
基礎程式庫
編輯基礎程式庫由Dart編寫,提供了用Flutter組建應用程式所需的基本的類別和函數,例如與引擎通訊的API[14]。
元件
編輯Flutter是通過組織、創建不同的組件完成用戶界面設計的。在Flutter中,一個組件代表用戶界面中不可變的一部分;包括文本、多邊形以及動畫在內的所有圖形都是用組件創建的。複雜的組件由簡單的組件結合而成。
客製化設計風格的元件
編輯Flutter框架包含了兩套符合特定設計語言的組件。 稱作Material Design的組件實作的是同名的谷歌設計語言,稱作Cupertino的組件實作蘋果公司iOS的人機接口指南(Human interface guidelines)[11][15][16][17] 。
第三方擴充
編輯Flutter 使用 pub (頁面存檔備份,存於網際網路檔案館) 管理第三方依賴包。在項目的 pubspec.yaml 中,開發者可以指定每個相依項的版本範圍,或者固定版本號。
IDE
編輯Flutter支持使用 Visual Studio Code 或 Android Studio ,需要安裝 Flutter 插件和 Dart 插件。
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: const Text('Hello World App'),
),
body: const Center(
child: Text('Hello World'),
),
),
);
}
}
參考文獻
編輯- ^ Chris Bracken. Release v0.0.6: Rev alpha branch version to 0.0.6, flutter 0.0.26 (#10010) · flutter/flutter. GitHub. [2018-08-08]. (原始內容存檔於2019-02-05).
- ^ https://github.com/flutter/flutter/releases/tag/3.24.5.
- ^ FAQ - Flutter. [2018-08-08]. (原始內容存檔於2018-08-09).
- ^ Google’s "Fuchsia" smartphone OS dumps Linux, has a wild new UI. Ars Technica. [2018-04-03]. (原始內容存檔於2019-09-26).
- ^ Sky: An Experiment Writing Dart for Mobile (Dart Developer Summit 2015). [2020-06-12]. (原始內容存檔於2020-06-14).
- ^ Amadeo, Ron. Google’s Dart language on Android aims for Java-free, 120 FPS apps. Ars Technica. 1 May 2015 [2018-04-03]. (原始內容存檔於2015-05-06).
- ^ Speed Up Native Development As Google Flutter Comes Out Of Beta. Appetiser Apps. [2018-12-21]. (原始內容存檔於2019-03-12) (英語).
- ^ Flutter: the first UI platform designed for ambient computing. Flutter blog. [2019-12-11]. (原始內容存檔於2019-12-11) (英語).
- ^ Sneath, Tim. Introducing Flutter 3. Flutter. 2022-05-11 [2022-07-05] (英語).
- ^ Flutter Engine Source Code. GitHub. [2022-03-03]. (原始內容存檔於2022-05-10).
- ^ 11.0 11.1 11.2 Technical Overview - Flutter. flutter.io. [2017-12-13]. (原始內容存檔於2017-12-13) (英語).
- ^ Lelel, Wm. Why Flutter Uses Dart. HackerNoon. 26 February 2018 [5 December 2018]. (原始內容存檔於2019-11-16).
- ^ stephenwzl. Flutter’s Compilation Patterns. ProAndroidDev. 2018-08-01 [2018-12-06]. (原始內容存檔於2020-06-09).
- ^ foundation library - Dart API. [2017-12-13]. (原始內容存檔於2017-12-13) (英語).
- ^ Material Design Widgets - Flutter. flutter.dev. [2017-12-13]. (原始內容存檔於2020-06-16) (英語).
- ^ Cupertino (iOS-style) Widgets - Flutter. flutter.dev. [2017-12-13]. (原始內容存檔於2020-06-16) (英語).
- ^ Human Interface Guidelines. developer.apple.com. [2019-10-08]. (原始內容存檔於2020-11-28) (英語).
- ^ 存档副本. [2024-04-09]. (原始內容存檔於2024-05-21).