1. 变量与常量
Dart 使用 var
声明变量,const
和 final
声明常量。
var age = 30; // 变量
final name = "Alice"; // 常量,只读
const pi = 3.1415; // 编译时常量
注意事项: const
用于编译时常量,final
用于运行时确定的常量。
2. 数据类型
Dart 是强类型语言,支持基本数据类型如 int
、double
、String
、bool
。
double height = 1.75;
bool isStudent = true;
String city = "New York";
易错点:确保使用正确的数据类型,避免隐式转换错误。
3. 条件控制
Dart 使用 if
、else
和 switch
实现条件控制。
if (age > 18) {
print("Adult");
} else {
print("Minor");
}
注意事项: switch
语句需包含 default
分支。
4. 函数
使用 void
或返回类型定义函数。
String greet(String name) {
return "Hello, $name!";
}
易错点:函数的参数类型必须匹配传入的值类型。
5. 类与对象
Dart 支持面向对象编程,类的定义使用 class
关键字。
class Person {
String name;
int age;
Person(this.name, this.age);
void greet() {
print("Hello, my name is $name");
}
}
注意事项:构造函数可以使用 this
简写初始化字段。
6. 集合操作
Dart 提供了 List
、Set
和 Map
集合类型。
List names = ["Alice", "Bob"];
Set numbers = {1, 2, 3};
Map scores = {"Alice": 90, "Bob": 85};
易错点: List
和 Set
类型必须一致,Map
键值对类型必须一致。
7. 异步编程
Dart 使用 async
和 await
实现异步编程。
Future fetchData() async {
var data = await fetchDataFromServer();
print(data);
}
注意事项:异步函数返回 Future
,调用时需使用 await
。
8. 错误处理
使用 try
、catch
和 finally
处理错误。
try {
int result = 10 ~/ 0;
} catch (e) {
print("Error: $e");
} finally {
print("Operation complete");
}
注意事项: ~/
用于整除操作,防止小数结果。
高级与小众用法
扩展方法
Dart 允许通过扩展方法为现有类添加新方法。
extension NumberParsing on String {
int toIntOrZero() {
return int.tryParse(this) ?? 0;
}
}
注意事项:扩展方法不影响原类定义,仅限于当前作用域使用。
箭头函数
箭头函数用于单行函数简写。
int add(int a, int b) => a + b;
易错点:箭头函数仅适用于单一表达式,不能包含多行代码。
构造函数重定向
构造函数重定向允许一个构造函数调用另一个构造函数。
class Point {
int x, y;
Point(this.x, this.y);
Point.origin() : this(0, 0); // 重定向到主构造函数
}
注意事项:重定向构造函数必须在初始化列表中使用。
级联操作符
级联操作符 ..
可以链式调用对象的多个方法。
var buffer = StringBuffer()
..write("Hello")
..write(" World");
注意事项:级联操作符适合链式调用,避免代码冗长。
Null 安全
Dart 使用 ?
和 ??
实现 Null 安全。
String? name;
print(name ?? "Unknown"); // 若 name 为 null,则输出 "Unknown"
易错点:使用 !
断言非空时确保变量不为 null
。
泛型
泛型使代码更灵活,可以用于类和方法。
class Box {
T content;
Box(this.content);
}
注意事项:泛型的具体类型在使用时才会确定。