【大前端】【Android】Flutter 开发者的 Dart 语法全解析(2025 最新)
·
下面是一份 超详细、系统化、入门到进阶 的 Flutter Dart 语法解析,可以当作一篇“Dart 语言速通 + 深入机制”的教程来阅读(对 Flutter 开发非常友好)。
🚀 Flutter 开发者的 Dart 语法全解析(2025 最新)
Dart 是 Flutter 使用的核心语言,它既吸收了 Java / JavaScript / Swift / Kotlin 的优点,又加入了强类型 + JIT & AOT + Null Safety 等特性。本解析从基础到进阶,一步步讲清楚 Dart 的语法体系。
目录
-
Dart 的特点
-
基础语法
-
变量 & 类型系统(含 Null Safety)
-
函数(Function / Lambda / 可选参数)
-
类与对象(class / 构造函数 / 继承 / mixin)
-
集合(List / Map / Set)+ 常用操作
-
异步编程(Future / async / await / Stream)
-
泛型(Generics)
-
扩展方法(Extension)
-
枚举(Enum)加强版
-
Dart 的 Isolate(并行模型)
-
常用语言糖 & 语法技巧
1. Dart 的特点
| 特点 | 描述 |
|---|---|
| 强类型 | 静态类型,支持类型推断 |
| Null Safety | 默认变量不为空,可控可空类型 |
| AOT + JIT | Flutter Release:AOT(性能高),Flutter Debug:JIT(热重载) |
| 单线程模型 | 事件循环,类似 JS,但支持 isolate 多线程 |
| 跨平台 | Flutter 全平台使用 |
2. 基础语法
main() 函数(程序入口)
void main() {
print("Hello Dart");
}
注释
// 单行
/* 多行 */
/** 文档注释 */
输出
print("value");
3. 变量 & 类型系统(Null Safety)
变量声明
var name = 'Tom'; // 自动推断 String
final age = 18; // 只能赋值一次
const PI = 3.14; // 编译时常量
final vs const
| final | const |
|---|---|
| 运行时确定 | 编译时常量 |
| 只能赋值一次 | 须为编译期可计算的值 |
| 常用于对象 | 常用于数值、字符串等 |
🎯 Null Safety(重要)
默认变量 不允许为空:
String name = "A"; // OK
String user; // ❌ 报错:必须初始化
可空类型 String?
String? nickname;
nickname = null;
空安全操作符
| 操作符 | 作用 |
|---|---|
? |
可空字段访问 |
?? |
null 则使用默认值 |
??= |
null 则赋值 |
! |
断言不为空 |
示例
String? a;
print(a ?? "default"); // default
a ??= "Hello"; // 如果为 null 赋值
print(a); // Hello
String? b = "abc";
String c = b!; // 断言 b 不为空,否则运行时异常
4. 函数(Function)
普通函数
int add(int a, int b) {
return a + b;
}
箭头函数
int add(int a, int b) => a + b;
可选参数
① 位置可选参数([]):
void test(a, [b, c]) { }
test(1);
test(1, 2);
② 命名可选参数({})
最推荐的方式:
void greet({required String name, int age = 18}) {
print("$name, $age");
}
greet(name: "Tom");
5. 类与对象(class)
基本定义
class Person {
String name;
int age;
Person(this.name, this.age);
void say() => print("Hi $name");
}
使用
var p = Person("Tom", 20);
构造函数
普通构造
Person(this.name, this.age);
命名构造
Person.fromJson(Map map) {
name = map["name"];
age = map["age"];
}
常量构造
class Point {
final int x, y;
const Point(this.x, this.y);
}
const p = Point(1, 2);
继承 & 方法重写
class Animal {
void run() => print("run");
}
class Dog extends Animal {
@override
void run() => print("Dog run");
}
接口
所有类都可被当作接口:
class A {
void foo() {}
}
class B implements A {
@override
void foo() {}
}
mixin(多继承)
复用代码的最佳方式:
mixin Fly {
void fly() => print("flying");
}
class Bird with Fly {}
6. 集合
List
var list = [1, 2, 3];
list.add(4);
Set
var s = {1, 2, 3};
s.add(1); // 无效
Map
var m = {"name": "Tom"};
m["age"] = 20;
集合操作(高级)
map/filter/reduce
var list = [1,2,3];
var doubled = list.map((e) => e * 2).toList();
展开操作符(...)
var l = [1, ...[2,3], 4];
null-aware 展开(...?)
List<int>? a;
var l = [...?a, 1, 2];
7. 异步编程(Dart 的核心)
Future(类似 JavaScript Promise)
Future<String> fetch() async {
return "data";
}
async / await
void getData() async {
var data = await fetch();
}
Stream(可多次返回数据)
监听事件流:
Stream<int> count() async* {
for (int i = 0; i < 3; i++) {
yield i;
}
}
void main() {
count().listen((value) => print(value));
}
8. 泛型 Generics
List<String> names = [];
Map<String, int> map = {};
泛型函数:
T first<T>(List<T> list) => list[0];
9. 扩展方法 Extension
无侵入式增强类能力:
extension StringExt on String {
bool get isEmail => contains("@");
}
print("abc@test.com".isEmail);
10. 加强版 Enum(Dart 2.17+)
enum Color {
red(1),
green(2),
blue(3);
final int value;
const Color(this.value);
}
print(Color.red.value); // 1
还能声明方法、接口,非常强大。
11. Isolate(真正多线程)
Dart 中 isolate 是独立内存空间 + 消息通信的线程。
例:启动 isolate:
import 'dart:isolate';
void entry(SendPort port) {
port.send("hello");
}
void main() async {
final rec = ReceivePort();
await Isolate.spawn(entry, rec.sendPort);
rec.listen(print);
}
Flutter 的 Compute 就是 isolate 的封装。
12. Dart 语言糖 & 必会技巧
① ?. 链式调用
user?.profile?.name;
② ??= 默认赋值
name ??= "default";
③ 级联操作符(..)
var p = Person("A", 20)
..name = "B"
..say();
④ late 延迟初始化
late String token;
token = "abc";
⑤ typedef 类型别名
typedef Callback = void Function(int);
📌 结语:Flutter 开发者应该怎样掌握 Dart?
建议学习路线:
-
理解变量、泛型、集合
-
搞懂 async/await(应用最多)
-
掌握 class + OOP + mixin(控制 UI 构建的核心思想)
-
熟练使用 extension、enum 增强写法
-
懂 isolate(性能优化加分项)
更多推荐

所有评论(0)