dart基本语法(1)
本文系统介绍了Dart编程语言的基础规范,包括文件必须以.dart为后缀、程序入口main()方法、语句分号规则等语法要点。重点讲解了变量声明使用var关键字和两种常量声明方式:编译时常量const与运行时常量final,通过代码示例对比了两者的特性差异和适用场景。文章强调Dart作为Flutter框架的核心语言,其简洁语法和类型系统能帮助开发者编写高效、安全的跨平台应用代码,掌握这些基础规则是进
Dart 是由 Google 开发的一种现代化、面向对象、支持强类型和类型推断的编程语言。自 Flutter 框架崛起以来,Dart 已成为跨平台移动开发的主流语言之一。其语法简洁、性能优异,并具备良好的工具链支持。本文将系统讲解 Dart 的基本语法规则、变量与常量机制、核心数据类型及编码规范,并结合图示与代码示例,帮助开发者快速掌握 Dart 编程基础。
一、Dart 语言基础规范
1. 文件后缀必须为 .dart
Dart 源代码文件必须以 .dart 作为扩展名,这是 Dart 编译器和开发工具识别源文件的标准方式。
例如:
- ✅ 正确:
main.dart、utils.dart、calculator.dart - ❌ 错误:
app.js、script.py(无法被 Dart 工具链处理)
良好的命名习惯有助于项目结构清晰。建议采用小写字母加下划线(snake_case)风格,如 user_repository.dart。

上图展示了典型的 Dart 项目结构,其中每个文件均以
.dart结尾。
2. 程序入口:main() 方法
每个可独立运行的 Dart 程序必须包含一个 main() 函数,它是程序执行的起点。Dart 虚拟机从该函数开始加载并执行代码。
void main() {
print('Hello World');
}
main函数通常返回void,但也可省略返回类型(Dart 支持隐式void)。- 它可以接收命令行参数:
void main(List<String> arguments) {
print('Arguments: $arguments');
}
在 Flutter 应用中,main() 通常用于初始化应用:
void main() => runApp(MyApp());
3. 语句结束需加分号(;),但 {} 块不加
Dart 继承了 C 语言家族的语法风格,绝大多数语句必须以分号 ; 结尾。这是语法解析的关键规则。
✅ 正确写法:
int age = 25;
String name = 'Alice';
print(name);
❌ 错误写法(缺少分号将导致编译失败):
int age = 25 // 编译错误!
print('Hello')
例外:由大括号 {} 包裹的代码块(如函数体、控制结构体)在 } 后不需要加分号。
if (true) {
print('Inside block');
} // ← 这里不加分号
这一规则有助于区分语句与代码块,避免语法歧义。

上图展示了最简单的 “Hello World” 程序输出效果,验证了
main()函数与print()语句的正确使用。
二、变量声明:var 关键字
1. 使用 var 声明可变变量
当需要存储可能变化的数据时,使用 var 声明变量:
void main() {
var s = '10';
print(s);
s = '12';
print(s);
}
var表示“自动推断类型”(Type Inference)。- 变量在第一次赋值时确定其类型,之后不可更改类型。
例如:
var count = 100; // 推断为 int
count = 200; // ✅ 允许
// count = 'abc'; // ❌ 错误:不能将 String 赋给 int

上图演示了
var变量的两次赋值过程,均保持字符串类型,程序正常运行。
2. 显式类型声明更安全
虽然 var 简洁,但在公共接口、类成员或函数参数中,推荐显式声明类型以提升可读性和健壮性:
class Student {
String name;
int id;
Student(this.name, this.id);
}
三、常量声明:const 与 final
Dart 提供两种常量机制,适用于不同场景。
1. const:编译时常量
-
特点:
- 值必须在编译时完全确定。
- 表达式中不能包含运行时变量(如函数调用、用户输入)。
- 所有
const对象在内存中共享同一实例(单例优化)。
-
适用场景:数学常数、API 地址、固定配置等。
void main() {
const t = 3.1415926;
const e = t * 2; // ✅ 允许:t 是 const,表达式可编译期计算
print(e);
}
❌ 以下写法非法:
const now = DateTime.now(); // ❌ 错误:DateTime.now() 是运行时值

上图展示了
const常量的计算与输出,程序成功运行并打印6.2831852。
2. final:运行时常量
-
特点:
- 值在运行时初始化一次,之后不可修改。
- 可使用运行时表达式(如当前时间、随机数)。
- 每次创建对象时生成新实例。
-
适用场景:唯一会话 ID、启动时间、用户设备信息等。
void main() {
final time = DateTime.now();
print(time);
}

上图显示了
final变量捕获当前时间并成功打印,体现了其运行时初始化特性。
3. const vs final 对比总结
| 特性 | const |
final |
|---|---|---|
| 初始化时机 | 编译时 | 运行时 |
| 是否可含变量 | ❌ 否 | ✅ 是 |
| 内存优化 | 共享实例 | 独立实例 |
| 典型用途 | π、版本号、静态配置 | 当前时间、UUID、用户 Token |
💡 Flutter 开发提示:在 Widget 构造中尽可能使用
const,可显著减少重建开销,提升渲染性能。
结语
Dart 以其简洁的语法、强大的类型系统和高效的运行时表现,成为现代应用开发的理想选择。掌握其基本语法规则——包括文件规范、main 入口、变量/常量声明、数据类型及控制结构——是迈向 Flutter 或服务端 Dart 开发的关键一步。通过理解 var、final、const 的差异,并结合图示与实践,开发者能够编写出更安全、高效、可维护的代码。
更多推荐



所有评论(0)