跳至主要内容

Dart 入门

要开始使用 Flutter,您需要对 Dart 编程语言有一定的了解,Flutter 应用程序是用 Dart 编写的。此页面是对 Dart 的简要介绍,如果您对阅读代码示例感到满意,可以跳过此页面。您无需成为 Dart 专家即可继续学习本系列课程。

Dart

#

Flutter 应用程序是用 Dart 构建的,对于任何编写过 Java、Javascript 或其他类似 C 语言的人来说,Dart 语言看起来都很熟悉。

以下示例是一个小程序,它从 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 语言特性,包括使用库、将函数标记为异步、进行函数调用、使用 if 语句控制流等等。

如果您不熟悉这些功能,可以在 Dart 入门 页面上找到学习 Dart 的资源。

下一步:Widget

#

此页面是 Dart 的入门介绍,可帮助您熟悉阅读 Flutter 和 Dart 代码。如果您对本页面上的所有代码都不清楚,也没关系,只要您对 Dart 语言的语法感到满意即可。在下一节中,您将学习 Flutter 应用程序的构建块:Widget。

反馈

#

由于网站的此部分正在不断发展,我们 欢迎您的反馈