12.5 Dart:Flutter的动力

Dart由Google于2011年发布,最初希望取代JavaScript。虽然这一目标没有实现,但Dart在2017年因Flutter框架而获得新生。

dart
复制代码
// Dart代码示例

// 类
class User {
  final String name;
  final int age;
  final String? email;
  
  User({required this.name, required this.age, this.email});
  
  // 命名构造函数
  User.guest() : name = 'Guest', age = 0, email = null;
  
  // 工厂构造函数
  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      name: json['name'],
      age: json['age'],
      email: json['email'],
    );
  }
  
  String get displayName => name.toUpperCase();
}

// 扩展方法
extension StringExtension on String {
  bool get isValidEmail => contains('@') && contains('.');
}

// 异步和Future
Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 1));
  return 'Data';
}

// 集合操作
void main() async {
  final numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  final evenSquares = numbers
      .where((n) => n.isEven)
      .map((n) => n * n);
  
  print(evenSquares.toList());
  
  // 使用Stream
  final stream = Stream.periodic(Duration(seconds: 1), (i) => i).take(5);
  await for (final value in stream) {
    print('Tick: $value');
  }
  
  // null安全
  String? maybeNull = null;
  final length = maybeNull?.length ?? 0;
}

Dart的特点:

  • 强类型和类型推断
  • null安全
  • 异步编程FutureStream
  • JIT和AOT编译:开发时使用JIT(热重载),生产环境使用AOT(快速启动)
  • Flutter框架:跨平台UI开发