跳至主要內容

Dart 簡介

要開始使用 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'], 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。

意見回饋

#

由於網站的這一部分正在不斷發展,我們歡迎您的意見回饋