Skip to content

Dart 语法核心亮点总结

Dart 的特别之处

Dart 是一种现代、强大的语言,专为在任何平台上构建快速应用程序而设计。以下是其核心亮点:

1. 健全的空安全

Dart 的空安全在编译时防止空引用错误:

dart
String name = 'Alice';  // 非空
String? maybeName;      // 可空

// 编译时错误预防
// name = null;  // 错误!
maybeName = null;  // 可以

优势:

  • 更少的运行时错误
  • 更好的性能
  • 更清晰的代码意图

2. 强类型系统与类型推断

Dart 结合了静态类型和类型推断:

dart
var name = 'Alice';  // 推断为 String
var age = 25;        // 推断为 int

// 保持类型安全
// name = 123;  // 错误!

3. 一切皆对象

Dart 中的一切都是对象,包括数字和函数:

dart
int number = 42;
print(number.isEven);  // true

var multiply = (int a, int b) => a * b;
print(multiply(3, 4));  // 12

4. 出色的异步支持

内置的 async/await 使异步代码易读:

dart
Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 1));
  return '数据已加载';
}

void main() async {
  var data = await fetchData();
  print(data);
}

5. 强大的集合

丰富的集合类型和函数式操作:

dart
var numbers = [1, 2, 3, 4, 5];

var doubled = numbers.map((n) => n * 2);
var evens = numbers.where((n) => n % 2 == 0);
var sum = numbers.reduce((a, b) => a + b);

6. Mixin 实现代码复用

Mixin 允许在不使用传统继承的情况下复用代码:

dart
mixin Flyable {
  void fly() => print('飞行中!');
}

class Bird with Flyable {}

void main() {
  Bird().fly();  // 飞行中!
}

7. 扩展方法

为现有类添加功能:

dart
extension StringExtension on String {
  String get reversed => split('').reversed.join();
}

void main() {
  print('hello'.reversed);  // olleh
}

8. 模式匹配(Dart 3.0+)

现代模式匹配使代码更清晰:

dart
String describe(Object obj) {
  return switch (obj) {
    int n when n > 0 => '正数',
    String s => '字符串:$s',
    List l => '包含 ${l.length} 项的列表',
    _ => '其他',
  };
}

9. 记录(Dart 3.0+)

轻松返回多个值:

dart
(String, int) getUserInfo() {
  return ('Alice', 25);
}

void main() {
  var (name, age) = getUserInfo();
  print('$name 今年 $age 岁');
}

10. 热重载

开发期间即时更新代码:

  • 毫秒级查看更改
  • 保持应用状态
  • 提升生产力

关键语言特性

变量与类型

  • varfinalconst
  • 使用 ? 的空安全
  • 类型推断

函数

  • 一等函数
  • 箭头语法
  • 命名和可选参数
  • 高阶函数

面向对象

  • 类与构造函数
  • 继承与 mixin
  • 抽象类与接口
  • 操作符重载

异步

  • 单个异步值的 Future
  • 序列的 Stream
  • async/await 语法
  • 使用 try-catch 处理错误

集合

  • List、Set、Map
  • 集合 if/for
  • 展开运算符
  • 丰富的 API(map、where、reduce)

为什么选择 Dart?

用于 Flutter 开发

  • Flutter 必需
  • 最佳性能
  • 热重载
  • 所有平台的单一代码库

用于通用开发

  • 现代语言特性
  • 强大的工具链
  • 出色的性能
  • 易于学习

性能

  • 生产环境的 AOT 编译
  • 开发环境的 JIT 编译
  • 快速启动时间
  • 高效的内存使用

开发者体验

  • 清晰的错误消息
  • 出色的 IDE 支持
  • 丰富的标准库
  • 活跃的社区

Dart 与其他语言对比

vs JavaScript

  • ✅ 静态类型
  • ✅ 空安全
  • ✅ 更好的工具链
  • ✅ 更快的执行速度

vs Java

  • ✅ 现代语法
  • ✅ 空安全
  • ✅ 更简单的泛型
  • ✅ 更好的异步支持

vs Kotlin

  • ✅ 跨平台(Flutter)
  • ✅ 更简单的语法
  • ✅ 更适合 UI
  • ≈ 类似的现代特性

vs Swift

  • ✅ 跨平台
  • ✅ 更简单的语法
  • ≈ 类似的性能
  • ≈ 类似的现代特性

Dart 生态系统

核心工具

  • Dart SDK:编译器、VM、库
  • pub.dev:包仓库
  • DartPad:在线游乐场
  • Dart DevTools:调试和分析

流行包

  • http:HTTP 客户端
  • dio:高级 HTTP 客户端
  • json_serializable:JSON 处理
  • riverpod:状态管理
  • freezed:不可变类

框架

  • Flutter:UI 框架
  • AngularDart:Web 框架
  • Shelf:服务器框架
  • Aqueduct:REST API 框架

学习路径

  1. 基础(1-2 周)

    • 变量、类型、函数
    • 控制流
    • 集合
  2. 中级(2-3 周)

    • 面向对象概念
    • 空安全
    • 异步编程
  3. 高级(3-4 周)

    • 泛型
    • Mixin
    • 扩展方法
    • Isolate
  4. Flutter(持续)

    • Widget
    • 状态管理
    • 导航
    • 平台集成

最后的想法

Dart 是一种现代、高效且强大的语言,擅长于:

  • ✅ 使用 Flutter 构建精美的 UI
  • ✅ 编写清晰、可维护的代码
  • ✅ 防止常见错误
  • ✅ 提供高性能
  • ✅ 支持快速开发

无论你是构建移动应用、Web 应用还是服务器端服务,Dart 都提供了成功所需的工具和特性。

今天就开始使用 Dart 构建吧! 🚀

下一步