📌 第一部分:Dart 概览与定位
1.1 定义与全称
Dart 是由 Google 开发的通用编程语言,由 Lars Bak 和 Kasper Lund 于 2011 年创建。Dart 被设计为 用于构建 Web、移动和桌面应用的高性能语言。2018 年 Flutter 框架的崛起让 Dart 成为跨平台开发的核心语言。
1.2 核心定位
Dart 的核心定位是 UI 开发的终极语言。它提供了:
- JIT 编译(开发时的热重载)
- AOT 编译(发布时的原生性能)
- 强类型系统(可选类型)
- 异步编程(Future、Stream、async/await)
- 面向对象(万物皆对象)
- Flutter 框架的原生语言
1.3 主要应用领域
- 跨平台移动应用: Flutter(iOS + Android 一套代码)
- Web 前端: 编译为 JavaScript 或 WebAssembly
- 桌面应用: Flutter Desktop(Windows、macOS、Linux)
- 服务端开发: Dart 可以运行在服务器端
- 嵌入式系统: 使用 Dart 开发嵌入式应用
1.4 知名案例
- Google: Google 内部大量使用 Flutter + Dart
- 阿里巴巴: 使用 Flutter 开发多个应用
- 字节跳动: 使用 Flutter 开发应用
- 腾讯: 使用 Flutter 开发应用
- BMW: 使用 Flutter 开发车载应用
- eBay: 使用 Flutter 开发应用
- Google Ads: 使用 Flutter 开发移动端
- 国内: 闲鱼、抖音、美团等均使用 Flutter
📜 第二部分:Dart 的历史与发展演进
2.1 诞生背景(2011年)
Dart 由 Lars Bak(V8 引擎共同创造者)和 Kasper Lund 于 2011 年在 Google 创建。最初的目标是 创造一种比 JavaScript 更好的 Web 语言。虽然 Dart 在 Web 领域没有取代 JavaScript,但 2018 年 Flutter 的出现彻底改变了 Dart 的命运。
2.2 关键版本里程碑
- Dart 1.0(2011年): 首次公开发布
- Dart 2.0(2018年): 重大变革——强类型、Dart 2 语言规范
- Dart 2.0 与 Flutter: 成为 Flutter 的官方语言
- Dart 2.7(2019年): Null Safety 预览
- Dart 2.10(2020年): 空安全(Null Safety)正式版
- Dart 2.12(2021年): 空安全稳定
- Dart 2.15(2021年): 隔离区(Isolate)改进
- Dart 2.16(2022年): 完善 Dart 和 Flutter 生态
- Dart 3.0(2023年): 重大里程碑——100% 空安全、Records、Patterns
- Dart 3.1(2023年): 性能优化
- Dart 3.2(2023年): 改进的 WebAssembly 支持
- Dart 3.3(2024年): 最新版本
2.3 设计哲学
- 万物皆对象: 所有值都是对象
- 强类型安全: 静态类型 + 运行时类型检查
- 垃圾回收: 自动内存管理
- 异步优先: 原生支持 Future 和 Stream
- 可编译性: 支持 JIT 和 AOT 两种编译模式
- UI 友好: 专门为构建用户界面优化
⚙️ 第三部分:核心语法与语言特性
3.1 基础语法
- 程序入口:
void main()
- 变量声明:
var:类型推断
final:只读变量
const:编译时常量
String、int、double、bool
- 注释:
//、/* */、///(文档注释)
// Dart 程序示例
void main() {
var name = "Dart";
final year = 2011;
const version = "3.0";
print("Hello, $name!");
}
3.2 数据类型
- 基本类型:
int、double、String、bool
num:int 和 double 的父类
Object:所有类的父类
dynamic:动态类型(编译时跳过类型检查)
void:无返回值
- 集合类型:
List:列表 [1, 2, 3]
Map:键值对 {"key": "value"}
Set:集合 {1, 2, 3}
Iterable:可迭代对象
- Nullable 类型: Dart 3.0+ 所有类型默认非空,
int? 表示可为空
3.3 空安全(Null Safety)
- 默认非空:
String name = "Dart"; 不能赋值为 null
- 可空类型:
String? name = null;
- 空值检查:
if (name != null) { print(name.length); }
- 空安全操作符:
name?.length(安全访问)
- ! 操作符:
name!.length(强制非空)
- ?? 操作符:
name ?? "Unknown"(提供默认值)
3.4 控制结构
- 条件判断:
if / else
- switch 语句: 强大的模式匹配
- 循环:
for、while、do-while
- for-in 循环:
for (var item in list) { ... }
3.5 函数
- 函数定义:
int add(int a, int b) => a + b;
- 可选参数:
- 位置参数:
void greet(String name, [String? title])
- 命名参数:
void greet({required String name, int age = 0})
- 匿名函数(Lambda):
(int x) => x * 2
- 闭包: 函数可以访问外部变量
- 高阶函数: 函数作为参数
3.6 类与面向对象
- 类定义:
class Person { String name; int age; Person(this.name, this.age); }
- 构造函数:
- 默认构造函数
- 命名构造函数:
Person.fromJson(Map data)
- 工厂构造函数:
factory Person.fromJson(...)
- 继承:
class Student extends Person
- 接口: 每个类都是接口
- 抽象类:
abstract class Animal
- Mixin:
mixin Logging { void log(String msg) { ... } }
- 单例模式: 使用
factory 构造函数
- getter/setter:
String get fullName => "$firstName $lastName";
3.7 异步编程
- Future: 表示异步操作的结果
- async/await: 异步函数
- Stream: 异步数据流
- Future 组合:
Future.wait()、Future.any()
// 异步编程示例
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
return "Data loaded";
}
void main() async {
print("Loading...");
String data = await fetchData();
print(data);
}
3.8 并发(隔离区 - Isolate)
- Isolate: Dart 的并发模型(类似 Actor)
- 消息传递: Isolate 之间通过消息通信
- compute: 简单并发任务
3.9 集合操作
- 常用方法:
map、where(filter)、reduce、fold
- 集合字面量:
[...list]、{...map}
- 集合推导:
[for (var i in range) i * 2]
📱 第四部分:Flutter 与 UI 开发
4.1 什么是 Flutter
Flutter 是 Google 的跨平台 UI 框架,使用 Dart 语言构建。Flutter 的理念是 "Everything is a Widget"(万物皆 Widget)。
4.2 Flutter 核心特性
- 声明式 UI: 类似 React 的声明式编程
- 热重载: 开发时实时预览
- 原生性能: 编译为原生 ARM 代码
- 一套代码多平台: iOS、Android、Web、桌面
- 丰富的组件库: Material Design + Cupertino
// Flutter 示例
import "package:flutter/material.dart";
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Hello Flutter")),
body: Center(
child: Text("Hello, Dart!"),
),
),
);
}
}
4.3 状态管理
- setState: 简单状态管理
- Provider: 最流行的状态管理
- Riverpod: Provider 的改进版
- Bloc: 业务逻辑组件
🛠️ 第五部分:工具链与生态
5.1 开发工具
- VS Code: 官方推荐 IDE(Dart + Flutter 插件)
- Android Studio: 完整 Flutter 支持
- IntelliJ IDEA: 支持 Dart 和 Flutter
5.2 核心工具
- Dart SDK: Dart 开发工具包
- Flutter SDK: Flutter 框架
- pub: 包管理器(类似 npm)
- dartfmt: 代码格式化
- flutter doctor: 环境检查工具
5.3 常用 Pub 包
- http: HTTP 请求
- provider: 状态管理
- riverpod: 状态管理
- dio: 网络请求
- hive: 轻量级数据库
- sqflite: SQLite
- get: 路由管理
🌟 第六部分:Dart 的独特优势与特点
6.1 JIT + AOT 双模式
Dart 在开发时使用 JIT(热重载),发布时使用 AOT(原生性能),兼顾了开发效率和运行时性能。
6.2 多平台支持
Dart + Flutter 一套代码可以运行在 iOS、Android、Web、桌面(Windows/macOS/Linux)
6.3 万物皆对象
Dart 是纯面向对象语言,所有值都是对象,包括基本类型。
6.4 空安全
Dart 3.0+ 完全空安全,从根本上杜绝了空指针异常。
6.5 异步编程
Dart 原生支持 Future 和 Stream,async/await 让异步编程更简单。
6.6 Google 背书
Dart + Flutter 由 Google 维护和推动,生态快速成长。
⚖️ 第七部分:Dart 与其他语言对比
7.1 Dart vs JavaScript
- Dart: 强类型、编译优化、跨平台 UI
- JavaScript: 更广泛、Web 原生、生态更大
- 建议: 跨平台移动用 Dart,Web 前端用 JS
7.2 Dart vs Kotlin
- Dart: Flutter 跨平台、JIT/AOT 双模式
- Kotlin: Android 原生、JVM 生态、多平台
- 建议: 跨平台用 Dart,Android 原生用 Kotlin
7.3 Dart vs Swift
- Dart: 跨平台、Flutter、Google 生态
- Swift: iOS 原生、Apple 生态、高性能
- 建议: 跨平台用 Dart,iOS 原生用 Swift
7.4 Dart vs Python
- Dart: 类型安全、跨平台 UI、异步优先
- Python: AI/数据科学、开发效率高
- 建议: UI 开发用 Dart,AI/数据用 Python
🧠 第八部分:学习建议
1
基础入门
Dart 基础语法、数据类型、控制流、函数、集合操作
2
核心进阶
类与对象、异步编程(Future/Stream)、空安全
3
Flutter 入门
Widget、布局、状态管理(setState/Provider)
4
实战方向
跨平台 App 开发、打包发布、性能优化
推荐书籍与资源
- 《Dart 编程语言》—— 官方教程
- 《Flutter 实战》—— 中文入门
- 《Flutter 开发指南》—— 实战导向
- Dart 官方文档: dart.dev
- Flutter 官方文档: flutter.dev
- DartPad: 在线运行 Dart 代码
- Flutter 中文社区: flutter.cn
🎯 总结升华
Dart 是跨平台 UI 开发的答案。
它可能没有 JavaScript 那么广泛,没有 Kotlin 那么成熟,但 Dart + Flutter 提供了 一套代码、双端原生、极致性能 的开发体验。
如果你是移动开发者,Flutter 正在改变游戏规则。如果你是 Web 开发者,Dart 也能编译为 WebAssembly。Dart 的跨平台能力让它成为 未来 UI 开发的重要选择。
"Flutter 正在统一移动端开发,而 Dart 是它的引擎。" 🎯
—— 技术社区评价
🔖 相关标签
#Flutter
#跨平台
#移动开发
#UI
#Google
#JIT
#AOT
📄 本文档为 Dart 完整白皮书 · 最后更新于 2026年06月28日