当前位置: 首页 > java >正文

Dart关键字完全指南:从基础到高级用法详解

Dart 关键字全面解析:从入门到精通

引言

Dart 作为 Flutter 框架的官方语言,近年来获得了广泛关注。掌握 Dart 的关键字是学习这门语言的基础,本文将全面解析 Dart 的所有关键字,帮助开发者深入理解其用法和最佳实践。


一、变量与常量声明

1. var - 类型推断声明

var name = 'Dart';  // 自动推断为String类型
var version = 2.12; // 自动推断为double类型
  • 声明时必须初始化
  • 类型确定后不可更改

2. final - 运行时常量

final currentTime = DateTime.now(); // 运行时初始化
  • 只能赋值一次
  • 运行时可确定值

3. const - 编译时常量

const pi = 3.14159;  // 编译时就必须确定值
const list = [1, 2, 3]; // 整个列表不可变
  • 值必须是编译时可计算的
  • final有更严格的限制

4. late - 延迟初始化

late String description; // 声明时不初始化void init() {description = 'Initialized'; // 使用前初始化
}
  • Dart 2.12引入
  • 用于非空变量的延迟初始化

变量声明对比表

关键字初始化时机是否可变典型用途
var声明时局部变量
final运行时配置参数
const编译时常量定义
late使用时依赖注入

二、流程控制结构

1. 条件语句

// if-else
if (score >= 90) {grade = 'A';
} else if (score >= 60) {grade = 'B';
} else {grade = 'C';
}// switch-case
switch (command) {case 'START':start();break;case 'STOP':stop();break;default:print('Unknown command');
}

2. 循环结构

// for循环
for (var i = 0; i < 5; i++) {print(i);
}// for-in循环
for (var item in collection) {print(item);
}// while循环
while (!done) {doSomething();
}// do-while循环
do {print('至少执行一次');
} while (false);

3. 循环控制

// break - 跳出整个循环
while (true) {if (condition) break;
}// continue - 跳过当前迭代
for (var i = 0; i < 10; i++) {if (i.isOdd) continue;print(i); // 只打印偶数
}

三、函数与异步编程

1. 基本函数

// 常规函数
int add(int a, int b) {return a + b;
}// 箭头函数(单行)
int multiply(int a, int b) => a * b;

2. 异步处理

// async/await
Future<String> fetchData() async {var data = await http.get('api/data');return processData(data);
}// 错误处理
try {var result = await fetchData();
} catch (e) {print('Error: $e');
} finally {cleanUp();
}

3. 生成器函数

// 同步生成器
Iterable<int> countTo(int n) sync* {for (var i = 1; i <= n; i++) {yield i;}
}// 异步生成器
Stream<int> countDown(int n) async* {for (var i = n; i > 0; i--) {yield i;await Future.delayed(Duration(seconds: 1));}
}

四、面向对象编程

1. 类与继承

class Animal {String name;Animal(this.name);  // 构造函数void eat() => print('$name is eating');
}class Dog extends Animal {Dog(String name) : super(name);  // 调用父类构造函数void eat() {super.eat();  // 调用父类方法print('...and wagging tail');}
}

2. 接口与混入

// 接口
abstract class Flyable {void fly();
}class Bird implements Flyable {void fly() => print('Flying high');
}// 混入(mixin)
mixin Swimming {void swim() => print('Swimming');
}class Duck extends Animal with Swimming {}

3. 工厂模式

class Logger {final String name;static final _cache = <String, Logger>{};factory Logger(String name) {return _cache.putIfAbsent(name, () => Logger._internal(name));}Logger._internal(this.name);
}

五、高级特性

1. 扩展方法

extension StringExtension on String {String get reversed => split('').reversed.join();int toInt() => int.parse(this);
}void main() {print('123'.reversed);  // '321'print('42'.toInt());    // 42
}

2. 类型定义

typedef JsonMapper = Map<String, dynamic> Function(String json);JsonMapper parser = (json) => jsonDecode(json);

3. 空安全

String? nullableString = maybeGetString();  // 可能为nullif (nullableString != null) {print(nullableString.length);  // 安全访问
}// 空断言操作符
print(nullableString!.length);  // 开发者确保不为null

最佳实践

  1. 优先使用final:除非需要修改变量,否则使用final
  2. 合理使用const:能使用const的地方尽量使用
  3. 避免dynamic:除非必要,否则不要使用dynamic
  4. 善用late:明确延迟初始化的变量使用late
  5. 类型安全:尽可能指定明确类型而非使用var
  6. 异步处理:优先使用async/await而非Future.then

结语

掌握 Dart 关键字是成为高效 Dart 开发者的第一步。本文涵盖了 Dart 的主要关键字及其用法,建议读者在实际开发中多加练习,逐步深入理解这些关键字的精髓。随着 Dart 语言的不断发展,新的特性也会不断加入,保持学习才能跟上技术发展的步伐。

希望这篇指南能帮助你在 Dart 开发之路上走得更远!

http://www.xdnf.cn/news/17406.html

相关文章:

  • C++归并排序
  • 人工智能之数学基础:事件独立性
  • 登上Nature子刊,深度学习正逐渐接管基础模型
  • Docker 安装 Redis
  • 【vue】Vue 重要基础知识清单
  • Vue3生命周期
  • wordpress的wp-config.php文件的详解
  • 三方相机问题分析七:【datespace导致GPU异常】三方黑块和花图问题
  • 专利服务系统平台|个人专利服务系统|基于java和小程序的专利服务系统设计与实现(源码+数据库+文档)
  • win11中Qt5.14.0+msvc2019+opencv4.9配置
  • Linux中的内核同步源码相关总结
  • GPT-5 is here
  • BUG调试案例十七:ENC424J600以太网掉线问题案例
  • Python实现点云PCA配准——粗配准
  • 板卡如何安装在主机系统(刀片服务器或计算节点)
  • 用browse实现菜单功能的方法
  • 数据结构--哈希表与排序、选择算法
  • 力扣-53.最大子数组和
  • 库函数版独立按键用位运算方式实现(STC8)
  • 解决阿里云盘不能分享压缩包【7-zip工具】(详细)
  • Linux多线程——生产者消费者模型
  • C/C++二维数组创建内存分配
  • 大模型——部署体验gpt-oss-20b
  • 云原生时代的 Linux:容器、虚拟化与分布式的基石
  • 复杂路况误报率↓78%!陌讯轻量化模型在车辆违停识别的边缘计算优化​
  • 抖音AI分身:帮助每个抖音创作者,打造自己的AI分身
  • Kotlin 数据容器 - MutableList(MutableList 概述、MutableList 增删改查、MutableList 遍历元素)
  • STM32学习笔记5-TIM定时器-1
  • cuda算子--softmax算子与优化
  • 如何将视频转为GIF格式,3大视频转为GIF工具