Dart 簡介
要開始使用 Flutter,您需要熟悉 Dart 程式語言,因為 Flutter 應用程式是以 Dart 編寫的。本頁是對 Dart 的簡要介紹,如果您能輕鬆閱讀程式碼範例,您可以跳過本頁。您不需要成為 Dart 專家才能繼續學習本系列。
Dart
#Flutter 應用程式是使用 Dart 建構的,對於任何寫過 Java、Javascript 或其他類似 C 語言的人來說,這個語言看起來會很熟悉。
以下範例是一個小型程式,它從 dart.dev 提取資料,解碼傳回的 json,並將其列印到主控台。如果您對理解此程式的能力有信心,可以跳到下一頁。
import 'dart:convert';
import 'package:http/http.dart' as http;
class Package {
final String name;
final String latestVersion;
final String? description;
Package(this.name, this.latestVersion, this.description);
@override
String toString() {
return 'Package{name: $name, latestVersion: $latestVersion, description: $description}';
}
}
void main() async {
final httpPackageUrl = Uri.https('dart.dev', '/f/packages/http.json');
final httpPackageResponse = await http.get(httpPackageUrl);
if (httpPackageResponse.statusCode != 200) {
print('Failed to retrieve the http package!');
return;
}
final json = jsonDecode(httpPackageResponse.body);
final package = Package(json['name'], json['latestVersion'], json['description']);
print(package);
}
這個程式包含兩個部分:Package
類別宣告,以及包含在 main
函式中的業務邏輯。
Package
類別包含您在使用 Dart 中的類別時會使用到的許多最常見的功能。這個類別有三個成員,並定義了一個建構子和一個方法。
Dart 語言是型別安全的;它使用靜態型別檢查來確保變數的值始終與變數的靜態型別匹配。在定義類別時,使用 String
註解成員是必要的,但由於型別推斷,通常是可選的。在此範例的 main
函式中,有許多行以 final variableName =
開頭。這些行是型別安全的,即使沒有明確給定型別。
Dart 還具有內建的健全的空值安全性。在範例中,description
成員宣告為 String?
型別。String?
末尾的 ?
表示此屬性可以為空。其他兩個成員不能為空,如果您嘗試將它們設定為 null
,程式將無法編譯。您可以在 Package
類別的建構子中看到這一點。它接受兩個必要的、位置參數和一個可選的、具名參數。
範例中的下一步是 main
函式。所有 Dart 程式,包括 Flutter 應用程式,都以 main
函式開始。該函式展示了幾個基本的 Dart 語言功能,包括使用函式庫、將函式標記為 async、進行函式呼叫、使用 if
語句控制流程等等。
如果您不熟悉這些功能,您可以在 Bootstrap into Dart 頁面上找到學習 Dart 的資源。
下一步:Widget
#本頁是對 Dart 的介紹,可協助您熟悉閱讀 Flutter 和 Dart 程式碼。如果您對本頁上的所有程式碼都不是很清楚也沒關係,只要您對 Dart 語言的語法感到熟悉即可。在下一節中,您將學習 Flutter 應用程式的基礎:widget。
意見回饋
#由於網站的這一部分正在不斷發展,我們歡迎您的意見回饋!
除非另有說明,否則本網站上的文件反映了 Flutter 的最新穩定版本。本頁最後更新於 2024-09-26。 檢視原始碼 或 回報問題。