Flutter第二节----Dart中的常量与变量 📅 2026/7/9 3:01:16 目录一.Dart的变量声明-----var二.Dart中的常量声明-----const三.Dart中的常量声明-----finalvar、const、final 核心区别对比四.总本节系统讲解了 Dart 语言中三种核心的变量与常量声明方式var、const和final。我们将深入探讨它们各自的语法、特性、适用场景以及核心区别并通过代码示例帮助您快速掌握如何在实际开发中正确选择和使用它们。目标读者Dart/Flutter 初学者、希望巩固变量声明基础知识的开发者以及需要清晰理解 const 与 final 区别的编程爱好者。一.Dart的变量声明-----var语法var 变量名值/表达式注意var在第一次赋值之后类型被确定 后面不允许更改类型特点const是代码编译前被确定的不允许表达式中有变量存在必须有常量或者固定值代码实例void main(ListString args) { var age20; //var第一次赋值之后类型被确定 后面不允许更改类型 print(age); age21; print(age); var age11517; print(age1); }var在第一次赋值之后类型被确定 后面不允许更改类型如上图所示age的类型为整型int如果我们将其改为字符型char会发生什么呢如图所示可以看到改完后报错了。二.Dart中的常量声明-----const场景在数学中圆周率π永远是3.1415926....,是不允许被改变的因此使用const来进行声明同类语法const 属性名值/表达式注意const表达式里面的值不允许有变量值代码示例1.正常代码void main(ListString args) { const num13.1415926; const length 2 * num1 * 10; print(length); }2.注意事项演示代码void main(ListString args) { var num13.1415926; const numnum1; //num1为变量将变量引入const运行就会出错 const length 2 * num * 10; }三.Dart中的常量声明-----final场景需要当前时间作为当前唯一的操作时间时间一旦被确定就不可以被修改。语法final 属性名值/表达式特点final变量在运行时被初始化其值设置后不可修改。代码实例void main(ListString args) { final time DateTime.now(); print(time); }2.const 与 final的区别void main(ListString args) { final time DateTime.now(); time DateTime.now(); print(time); }两者的区别在于final是运行时不可以修改const是编译时确认不可修改。var、const、final 核心区别对比下表清晰地对比了 var、const、final 三者在初始化时机、值可变性、类型要求和使用场景上的核心区别特性varconstfinal初始化时机运行时第一次赋值时编译时运行时值可变性可重新赋值同类型不可更改不可更改类型要求类型在第一次赋值时确定之后不可更改类型必须是编译时常量表达式不能包含变量可以是运行时确定的常量或变量使用场景值需要改变的变量编译时就能确定且不会改变的值如数学常数、配置值运行时才能确定且不会改变的值如当前时间、API 响应结果示例var age 20;age 21; // 允许const pi 3.1415926;const length 2 * pi * 10; // 允许final time DateTime.now();// time DateTime.now(); // 错误不可重新赋值四.总结本章介绍了 Dart 语言中三种主要的变量和常量声明方式它们各有特点适用于不同的场景var用于声明变量类型在第一次赋值时确定之后不可更改类型但可以重新赋值。const用于声明编译时常量值必须在编译时确定不允许在表达式中使用变量。final用于声明运行时常量值在运行时初始化一旦赋值后不可更改。核心区别const vs finalconst 是编译时常量值在编译时确定final 是运行时常量值在运行时确定。var vs const/finalvar 声明的变量可以重新赋值同类型而 const 和 final 声明的常量一旦赋值后不可更改。使用建议如果值在编译时就能确定且不会改变使用const。如果值在运行时才能确定且不会改变使用final。如果值需要改变使用var。掌握这三种声明方式的区别有助于编写更高效、更安全的 Dart 代码。