变量
以下实例表示创建一个变量并且给变量赋值:
var name = 'Bob';
变量是一个引用。变量名 name 表示一个值为“Bob”的字符串对象的引用。
默认值
未初始化的变量都会被默认初始化为 null。即时变量被声明为数字类型也会被默认初始化为null,因为数字类型也是对象。
int lineCount;
assert(lineCount == null);
// 变量即使被声明为数字类型也会被初始化为null
注:assert() 在 production 模式下是被忽略的,在 checked 模式下,除非断言表达式为 true,否则会抛出异常。详见 #断言#
Dart 2.0 注:Dart 2.0 没有 checked 模式,更多内容见 Dart 2.0 更新
可选类型
Dart 2.0 注:Dart 2.0 中的类型不在是可选的,但是基于类型引用,仍然可以忽略类型声明。更多内容见 Dart 2.0 更新
你可以选择在变量声明时添加静态类型:
String name = 'Bob';
添加类型申明可以清楚地表明你的意图。编译器和编辑器可以根据这些类型声明可以提供更好的代码补全和错误提示。
常量
如果你想声明一个不能修改的变量,可以使用 final 或 const 来声明。一个 final 变量只能被赋值一次;一个 const 变量是一个编译时常量。(const 变量是隐式 final)一个高阶或类的 final 变量在第一次使用时初始化。
注:实例变量只能是 final 不能是 const。
举个栗子
final name = 'Bob'; // 或者: final String name = 'Bob';
// name = 'Alice'; // 修改常量会导致错误
如果你想要声明一个编译时产量的话就使用 const。比如
const bar = 1000000; // Unit of pressure (dynes/cm2)
const atm = 1.01325 * bar; // Standard atmosphere