Dart 是一門易於上手、可移植且高效能的語言,專為全棧應用開發而設計。它提供健全的空安全(null safety)、強大的型別系統,並能將程式碼編譯為原生機器碼(適用於移動端、桌面端和後端),以及 JavaScript 或 WebAssembly(適用於 Web)。Dart 雖然是 Flutter 的基礎,但它也被用於構建命令列工具、伺服器及其他應用程式。
術語表
docs.flutter.dev 中使用的術語表。
以下是 Flutter 文件中使用的術語定義。
自適應 (Adaptive)
自適應設計是指 UI 在空間中是可用的,這與響應式設計(將 UI 適配進空間)不同。自適應應用程式會選擇合適的佈局(例如使用底部導航欄而不是側邊欄)和輸入裝置(例如滑鼠與觸控),從而在當前裝置上獲得自然的體驗。
相關文件和資源
代理技能 (Agent skill)
代理技能是一套專門的指令、指令碼和資源,用於擴充套件 AI 代理針對特定領域或任務的能力。技能使代理能夠與環境互動、執行多步驟工作流,並自主完成複雜的任務。
Cupertino
Flutter 的 cupertino 庫實現了 iOS 設計語言,包含一組遵循 Apple 人機介面指南(Human Interface Guidelines)的元件。
cupertino 庫最初是 Flutter 主倉庫的一部分,未來將被解耦為一個獨立的軟體包。更多資訊,請訪問 flutter.dev/go/decouple-design。
相關文件和資源
宣告式 (Declarative)
宣告式程式設計是一種透過描述 UI 的當前狀態來構建介面的風格,框架會自動處理 UI 轉換以匹配該狀態。
在 Flutter 中,元件(Widgets)是不可變的“藍圖”。要更改 UI,元件會觸發自身的重建(通常透過呼叫 setState)並構建一個新的元件子樹。這與命令式程式設計形成對比,在指令式程式設計中,你需要手動構建和修改 UI 實體。
相關文件和資源
嵌入器 (Embedder)
Flutter 支援的每個原生平臺都有一個用於處理平臺特定邏輯的嵌入器。嵌入器是與底層作業系統協調的橋樑。它提供對輸入、輔助功能、訊息事件迴圈等服務的訪問。嵌入器還負責啟動和管理 Flutter 引擎。
每個嵌入器都使用該平臺的原生語言編寫:Android 使用 Java 和 Kotlin,iOS 和 macOS 使用 Swift 和 Objective-C,Windows 和 Linux 使用 C++。
每個嵌入器都允許外掛包為應用程式新增額外的平臺特定功能。
嵌入器由執行器(Runner)應用程式啟動和管理。
引擎
幀 (Frame)
熱過載
此功能也稱為“有狀態熱過載”。當 Dart 執行時使用欄位和函式的新版本更新類後,Flutter 框架會自動重建元件樹,讓你快速檢視更改後的效果。熱過載極大地提高了開發效率。
熱過載適用於在除錯模式下執行的移動端、Web 和桌面端應用程式,並得到 VS Code、Android Studio 和 IntelliJ IDEA 的全面支援。它不會重新執行 main 或 initState;若要實現該操作,請使用熱重啟 (hot restart)熱重啟 (Hot restart)與熱過載類似,但不保持應用程式狀態。使用熱重啟來重新執行 `main` 或 `initState`。瞭解更多.
熱重啟 (Hot restart)
main 或 initState。熱重啟仍然比完全重啟快,完全重啟還會重新編譯原生平臺程式碼(如 Swift)。在 Web 上,它還會重啟 Dart 開發編譯器 (DDC)。
相關文件和資源
Impeller
Impeller 是 Flutter 的高效能渲染引擎,它是為了滿足 Flutter 的需求並利用現代圖形 API 從零開始構建的。
其主要目標是提供持續平滑的效能並消除渲染時的卡頓,特別是因動畫和互動期間著色器編譯導致的效能問題。
Impeller 透過在應用程式構建時預編譯特定且較小的著色器集合,而不是在執行時編譯來實現這一目標。
卡頓 (Jank)
當系統跟不上預期的幀率並導致掉幀時,就會出現卡頓。卡頓是一個性能問題。Flutter 提供了諸如 DevTools 中的效能工具等資訊和工具,可以幫助你診斷並修復應用程式中的卡頓問題。
Material
Material Design 是一套自適應的指南、元件和工具系統,支援使用者介面設計的最佳實踐。Flutter 的 material 庫實現了 Material Design 元件。
material 庫最初是 Flutter 主倉庫的一部分,未來將被解耦為一個獨立的軟體包。更多資訊,請訪問 flutter.dev/go/decouple-design。
空安全 (Null safety)
null 的變數而導致的錯誤。Dart 的空安全防止了因無意中訪問設定為 null 的變數而導致的錯誤。
透過 健全的空安全,變數預設不可為空:只有顯式將其宣告為可為空,才能賦值為 null。這與其他“混合”空安全實現不同,在混合實現中,不可為空的變數在執行時仍可能包含 null。使用 Dart 的健全空安全,編譯器可以保證不可為空的變數永遠不會是 null。
相關文件和資源
屬性鑽取 (Prop drilling)
透過建構函式引數在多層元件中傳遞資料的過程,通常是為了觸達更深層的後代元件。這種模式可能會變得冗長,因此通常會使用其他狀態管理解決方案(如 InheritedWidget 或 Provider)。
相關文件和資源
pub
Pub 是用於管理 Dart 包的工具。它允許你安裝、升級和管理 Dart 應用程式的依賴項。依賴項定義在 pubspec.yaml 檔案中。包託管在官方包倉庫 pub.dev 上。
相關文件和資源
RenderObject
雖然元件是不可變的藍圖,但 RenderObject 是在幀之間持久存在的不可變物件。它們處理決定元素放置位置及外觀的繁重工作。
它們代表渲染樹中的一個節點,渲染樹是 Flutter 多樹架構中最詳細的樹。
Sliver
Sliver 是可滾動區域中定義的一種具有特殊行為的部分。你可以將 Sliver 視為構建塊,將它們組合在 CustomScrollView 中以建立自定義滾動體驗,例如彈性滾動或摺疊標題。Sliver 是惰性構建的,這意味著 Flutter 只會渲染螢幕上可見的 Sliver,因此對於超長內容列表非常高效。
視口 (Viewport)
視口是滾動機制的視覺元件。它根據當前滾動偏移量顯示其子元件(通常是 Sliver)的子集。它常被描述為“內部比外部大”,因為它所包含的內容可以比螢幕上實際顯示的多得多。
相關文件和資源
小部件
使用者介面一部分的不可變描述。
在 Flutter 中,幾乎一切皆為元件 (Widget)。元件是你使用 Flutter 構建應用程式 UI 的基本構建塊。每個元件都是對其當前配置和狀態下“UI 應該是什麼樣”的不可變宣告。
元件在層次結構中組合在一起,形成元件樹。當元件的狀態發生變化時,Flutter 框架會重建樹的必要部分以更新 UI。
兩種主要的元件型別是 StatelessWidget(無狀態元件,沒有可變狀態)和 StatefulWidget(有狀態元件,具有可更新的持久 狀態)。
除非另有說明,本網站上的文件反映的是 Flutter 3.41.5 版本。報告問題。