在Dart中所有未初始化的变量默认值均为null。
-
final必须初始化,只能赋值一次,且不能修改值,赋值可以是常量也可以是变量。
-
const必须初始化,只能赋值一次,且不能修改值,赋值必须是常量。
- const必须根据可在编译时计算的数据创建它们。
- const对象无法访问运行时需要计算的任何内容。
- 使用const关键字声明的变量是隐式final的。
- 可以把const 常量赋给 final 变量,反过来不可以。
- final和const可以与变量的数据类型一起使用,也可以与 var 关键字一起使用
-
var 编译时确定的类型
-
dynamic 运行时确定类型
编译期会自动匹配var 变量的实际类型,并用实际类型来替换该变量的申明,这看上去就好像我们在编码的时候是用实际类型进行申明的。而dynamic被编译后,实际是一个 object类型,只不过编译器会对dynamic类型进行特殊处理,让它在编译期间不进行任何的类型检查,而是将类型检查放到了运行期。
参考文章:(https://blog.csdn.net/sinat_31057219/article/details/9020750