Dart 简介
Dart 是一种由 Google 开发的编程语言,它最初是为 Web 和客户端/服务器应用程序设计的。Dart 是一种面向对象的语言,支持类型推断、函数式编程和异步编程等特性。Dart 可以编译成 JavaScript,也可以通过 Dart 虚拟机(Dart VM)直接运行。
Dart 的主要特点
- 简单易学:Dart 的语法结构类似于 Java 和 C#,对于有这些语言背景的开发者来说很容易上手。
- 快速开发:Dart 支持热重载(Hot Reload),可以在不影响程序运行的情况下修改代码并立即看到效果。
- 跨平台:通过 Flutter 框架,Dart 可以开发出运行在不同平台的应用,包括 Android、iOS、Web 和桌面应用。
- 高性能:Dart 采用 JIT(Just-In-Time)编译方式,在开发阶段提供快速的迭代能力;而 AOT(Ahead-Of-Time)编译则用于生产环境,确保应用具有较高的性能。
安装 Dart
Windows 安装步骤
- 访问 Dart SDK 官方下载页面 下载适用于 Windows 的安装包。
- 解压下载的文件到一个你选择的目录,例如
C:\dart-sdk。 - 将 Dart 的 bin 目录添加到系统的 PATH 环境变量中:
- 打开系统属性 -> 高级系统设置 -> 环境变量。
- 在“系统变量”部分找到
Path变量并编辑,添加 Dart 的 bin 目录路径,如C:\dart-sdk\bin。
- 打开命令提示符,输入
dart --version查看是否正确安装。
macOS 安装步骤
- 使用 Homebrew 安装 Dart:
brew tap dart-lang/dart brew install dart
- 或者,你可以直接从 Dart SDK 官方下载页面 下载安装包,并按照指示进行安装。
- 安装完成后,打开终端并输入
dart --version来验证安装。
Linux 安装步骤
- 使用 apt-get 安装 Dart:
sudo apt-get update sudo apt-get install apt-transport-https sudo sh -c 'curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' sudo sh -c 'curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' sudo apt-get update sudo apt-get install dart
- 或者,直接从 Dart SDK 官方下载页面 下载安装包,并按照指示进行安装。
- 安装完成后,打开终端并输入
dart --version来验证安装。
Dart 基础语法
变量声明
Dart 是一种静态类型语言,这意味着你必须在声明变量时指定其类型。但是,Dart 支持类型推断,因此你可以省略类型声明,让编译器自动推断。
// 显式类型声明 int age = 30; String name = "Alice"; // 类型推断 var score = 95; // 编译器会自动推断出 score 是 int 类型 var greeting = "Hello"; // 编译器会自动推断出 greeting 是 String 类型
数据类型
Dart 支持多种数据类型,包括基本数据类型和复杂数据类型。
基本数据类型
num:数值类型,可以进一步分为int和double。bool:布尔值,只有两个值:true和false。String:字符串类型,使用双引号或单引号表示。
复杂数据类型
List:列表类型,类似于数组。Map:映射类型,用于存储键值对。Set:集合类型,用于存储不重复的元素。
控制流语句
Dart 提供了丰富的控制流语句,包括条件语句、循环语句等。
if 语句
if (condition) {
// 条件为 true 时执行的代码块
} else {
// 条件为 false 时执行的代码块
}switch 语句
// www.javascriptcn.com code example
switch (expression) {
case value1:
// 当 expression 等于 value1 时执行的代码块
break;
case value2:
// 当 expression 等于 value2 时执行的代码块
break;
default:
// 当 expression 不等于任何 case 中的值时执行的代码块
}循环语句
for 循环
for (int i = 0; i < 10; i++) { print(i); }while 循环
while (condition) { // 当 condition 为 true 时执行的代码块 }do-while 循环
do { // 至少执行一次的代码块 } while (condition);
函数
Dart 支持定义函数,函数可以有返回值,也可以没有返回值。函数可以接受参数,也可以不接受参数。
定义函数
void sayHello(String name) {
print("Hello, $name!");
}
int sum(int a, int b) {
return a + b;
}匿名函数
Dart 支持匿名函数,也称为闭包。
var greet = (String name) {
print("Hello, $name!");
};
greet("Bob"); // 输出 "Hello, Bob!"异常处理
Dart 支持异常处理机制,通过 try-catch-finally 结构来处理可能出现的错误。
try {
// 可能会抛出异常的代码块
} catch (e) {
// 处理异常的代码块
} finally {
// 无论是否发生异常都会执行的代码块
}类与对象
Dart 是一种面向对象的语言,支持类和对象的概念。
定义类
// www.javascriptcn.com code example
class Person {
String name;
int age;
Person(this.name, this.age);
void introduce() {
print("My name is $name and I am $age years old.");
}
}创建对象
Person person = Person("Alice", 30);
person.introduce(); // 输出 "My name is Alice and I am 30 years old."继承与接口
Dart 支持继承和实现接口。
继承
// www.javascriptcn.com code example
class Student extends Person {
String school;
Student(String name, int age, this.school) : super(name, age);
void study() {
print("$name is studying at $school.");
}
}
Student student = Student("Bob", 20, "MIT");
student.introduce(); // 输出 "My name is Bob and I am 20 years old."
student.study(); // 输出 "Bob is studying at MIT."实现接口
// www.javascriptcn.com code example
abstract class Animal {
void eat();
}
class Dog implements Animal {
@override
void eat() {
print("Dog is eating.");
}
}
Dog dog = Dog();
dog.eat(); // 输出 "Dog is eating."泛型
Dart 支持泛型,允许你在定义类、方法或函数时使用类型参数。
定义泛型类
// www.javascriptcn.com code example
class Box<T> {
T item;
Box(this.item);
T getItem() => item;
}
Box<String> stringBox = Box<String>("Hello");
print(stringBox.getItem()); // 输出 "Hello"泛型方法
T getFirstElement<T>(List<T> list) {
return list.first;
}
List<int> numbers = [1, 2, 3];
print(getFirstElement(numbers)); // 输出 1异步编程
Dart 提供了 Future 和 Stream 来处理异步操作。
Future
// www.javascriptcn.com code example
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
return "Data fetched";
}
Future<void> main() async {
String data = await fetchData();
print(data); // 输出 "Data fetched",两秒后
}Stream
// www.javascriptcn.com code example
Stream<int> countStream(int to) async* {
for (int i = 1; i <= to; i++) {
await Future.delayed(Duration(seconds: 1));
yield i;
}
}
void main() {
countStream(3).listen((int event) {
print(event);
});
// 输出 1, 2, 3,每秒输出一次
}总结
本章介绍了 Dart 语言的基础知识,包括 Dart 的安装、基础语法、控制流语句、函数、异常处理、类与对象、继承与接口、泛型以及异步编程等内容。通过学习这些内容,你将能够开始使用 Dart 进行基本的编程,并为进一步学习 Flutter 打下坚实的基础。