下面是一个创建变量并初始化它的例子:
var name = 'Bob';
变量存储引用。调用的变量name包含对String值为“Bob” 对象的引用。
name变量的类型被推断为String,但是可以通过指定类型来更改。如果对象不限于单一类型,请按照设计指南指定Object或dynamic类型。
dynamic name = 'Bob';
另一种选择是显式声明可以推断的类型:
String name = 'Bob';
注意:本页面遵循样式指南建议对局部变量使用var而不是类型注释的。
Default value
未初始化的变量的初始值为null。即使是具有数字类型的变量最初也是null,因为数字就像Dart中的其他所有都是对象。
int lineCount;
assert(lineCount == null);
注意:在生产代码中assert()调用被忽略。在开发期间,除非 condition 为真,否则assert(condition)抛出异常。
Final and const
如果您从不打算更改变量,请使用final或const代替var或替代类型。final变量只能设置一次,const变量是编译时常量。const变量是隐式final。final的顶级或类变量在第一次使用时被初始化。
注意:实例变量可以是final,但不能是const。必须在构造函数主体开始之前进行初始化final实例变量——在变量声明,构造函数参数或者构造函数的初始化器列表中。
下面是一个创建和设置final变量的示例:
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
不能更改final变量的值:
name = 'Alice'; // Error: a final variable can only be set once.
对于您想要成为编译时常量的变量使用const。如果const变量位于类级别,则将其标记为static const。在声明变量时,将该值设置为编译时常量,例如数字或字符串字面量、const变量或对常量数字进行算术运算的结果:
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere
const关键字不仅仅用于声明常量变量。您还可以使用它来创建常量值,以及声明创建常量值的构造函数。任何变量都可以具有常量值。
var foo = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`
可以从const声明的初始化表达式中省略const,比如上面的baz。
可以更改非final的,非const变量的值,即使它曾经有一个const值:
foo = [1, 2, 3]; // Was const []
不能改变const变量的值:
baz = [42]; // Error: Constant variables can't be assigned a value.
有关使用const创建常量值的更多信息,请参见Lists、Maps和 Classes。