空安全
在swift中,空安全是很常见的。经常用到的代码就是if let a = xxx{}这些代码,在大括号内使用a的时候就是安全的,但是在dart中,用空安全总感觉比较奇怪,判断不等于null之后,使用参数还必须加!。还有late这个关键字,延迟初始化之后不能再判断是否为null了,使用起来总是奇奇怪怪,没有swift好用。不知道是不是习惯了的问题?
空安全就是尽量将运行时的错误放到编译的时候,使用空安全之后,变量使用类型时可以选择可以为空或者不能为空两个状态,选择可以为空的变量需要在类型后面加?号,比如int? age,这表示允许age = null。
空安全的变量在使用时可以传一个预备值,比如a ?? 10,意思是如果a为空时使用10这个值
或者使用!保证值不为空。使用!类似于( as int)
在加载完成之前如果不使用当前变量,可以使用late关键字,注意:需要保证在加载完成之前不使用这个变量。 使用late的好处是,当前变量可以延时进行加载,就不再需要在类型前加上!号了,但是需要注意的是一定不能初始化之前进行使用它。
Dart中所有的全局变量默认都是用late进行修饰。
修饰变量的关键字:
- const 修饰的变量必须在编译期间有一个确定值
- final 可以通过计算/函数获取值。
- late 可以延时获取这个值,但是必须在使用前进行初始化
- late final 延时获取这个值,获取之后不能再进行更改