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?? 表示该属性可以为 null。而其它两个成员则不能为 null,如果你尝试将它们设置为 null,程序将无法编译。你可以在 Package 类的构造函数中看到这一点。该构造函数接受两个必需的位置参数和一个可选的命名参数。

接下来是 main 函数。所有 Dart 程序,包括 Flutter 应用程序,都是从 main 函数开始的。该函数展示了 Dart 语言的一些基本特性,包括使用库、标记函数为异步、调用函数、使用 if 语句控制流等等。

如果这些特性对你来说不太熟悉,你可以在 Dart 语言指引 页面上找到相关资源。

下一步:Widget

#

本页面介绍了 Dart,并帮助你熟悉阅读 Flutter 和 Dart 代码。如果你对本页的所有代码不太清楚也没关系,重要的是你能对 Dart 语言的 语法 感到熟悉。在下一部分,你将学习 Flutter 应用程序的构建模块:widget。

反馈

#

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