要開始使用 Flutter, 你需要對 Dart 程式語言有一些基本認識,因為 Flutter 應用程式是以 Dart 撰寫的。 本頁將為你溫和地介紹 Dart, 如果你已經能夠輕鬆閱讀 這些程式碼範例,也可以直接跳過本頁。 你不需要成為 Dart 專家, 就能繼續學習這個系列課程。

Dart

#

Flutter 應用程式是以 Dart 建構的, 這是一種對於寫過 Java、JavaScript 或其他 C 語系語言的人來說會感到熟悉的語言。

以下範例是一個小型程式, 會從 dart.dev 取得資料, 解碼回傳的 JSON, 並將其輸出到主控台。 如果你對於理解這個程式感到有信心, 可以直接跳到下一頁。

dart
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'],
    description: json['description'],
  );
  print(package);
}

這個程式分為兩個部分: Package 類別(class)的宣告,以及業務邏輯, 後者包含在 main 函式中。

Package 類別包含了你在 Dart 類別 中常用的多種功能。 這個類別有三個成員, 並定義了一個建構函式(constructor)和一個方法(method)。

Dart 語言具備 型別安全(type safe);它使用 靜態型別檢查(static type checking)來確保 變數的值始終符合 該變數的靜態型別。 在定義類別時,為成員註記 String 是必要的, 但由於型別推斷(type inference),這通常是可選的。 在本範例的 main 函式中, 有許多行都是以 final variableName = 開頭。 這些程式碼雖然沒有明確指定型別, 但依然是型別安全的。

Dart 也內建了 完善的空安全(sound null safety)。 在這個範例中,description 成員 被宣告為型別 String?String? 結尾的 ? 表示 這個屬性可以為 null。 另外兩個成員則不能為 null, 如果你嘗試將它們設為 null,程式將無法編譯。 你可以在 Package 類別的建構函式中看到這一點。 它接受兩個必要的 位置參數(positional arguments)以及一個可選的命名參數(named argument)。

接下來的範例是 main 函式。 所有 Dart 程式,包括 Flutter 應用程式, 都從 main 函式開始執行。 這個函式展示了數個 Dart 語言的基本特性, 包含使用函式庫、將函式標記為 async、 呼叫函式、使用 if 控制流程語句, 以及更多功能。

如果你對這些功能還不熟悉,可以在 Bootstrap into Dart 頁面找到學習 Dart 的資源。

下一步:元件 (Widgets)

#

本頁介紹 Dart,幫助你熟悉閱讀 Flutter 與 Dart 程式碼。如果你對本頁所有程式碼還不完全理解沒關係,只要你對 Dart 語言的「語法」感到自在即可。在下一節,你將學習 Flutter 應用程式的基石:元件 (Widgets)。

意見回饋

#

由於本網站區塊仍在持續改進中,歡迎提供你的意見回饋