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'],
description: json['description'],
);
print(package);
}
这个程序有两个部分:Package
类声明和业务逻辑,业务逻辑包含在 main
函数中。
Package
类包含你在使用 Dart 中的类 时将使用的许多最常见的功能。这个类有三个成员,并定义了一个构造函数和一个方法。
Dart 语言是 类型安全 的;它使用静态类型检查来确保变量的值始终与变量的静态类型匹配。在定义类时,需要使用 String
来注释成员,但由于类型推断,它通常是可选的。在本例的 main
函数中,有很多行以 final variableName =
开头。这些行是类型安全的,尽管没有明确给出类型。
Dart 还内置了 健全的空安全。在这个例子中,description
成员用 String?
类型声明。String?
末尾的 ?
表示此属性可以为 null。其他两个成员不能为 null,如果尝试将它们设置为 null
,程序将无法编译。你可以在 Package
类的构造函数中看到这一点。它接受两个必需的位置参数和一个可选的命名参数。
接下来是 main
函数。所有 Dart 程序,包括 Flutter 应用程序,都从 main
函数开始。该函数展示了几个基本的 Dart 语言特性,包括使用库、将函数标记为异步、进行函数调用、使用 if
语句控制流等等。
如果这些特性你还不熟悉,你可以在 Dart 入门 (/resources/bootstrap-into-dart) 页面上找到学习 Dart 的资源。
下一步:小部件
#本页介绍了 Dart,并帮助你熟悉阅读 Flutter 和 Dart 代码。如果你对本页的所有代码都不清楚,也没关系,只要你对 Dart 语言的 语法 感到舒服即可。在下一节中,你将学习 Flutter 应用程序的构建块:小部件。
反馈
#由于本网站的此部分正在不断发展,我们 欢迎您的反馈!
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。