116181529030811874
前言
为了防止变量数据为空导致程序报错,最新版本Dart引入了空安全,当一个不为空的变量赋值为null时将不能被编译
可空类型
- 在定义变量的数据类型时,在数据类型后加
?关键字,表示该变量是一个可空类型的变量
类型断言
- 如果一个可空类型的变量执行一些可能会导致报错的方法时,为了强制执行(可能会抛出异常),可以在变量后加
!避免无法编译
- 为了防止类型断言抛出异常,通常配合
try...catch处理异常
1 2 3 4 5 6
| String? str = ""; try { str!.length; } catch (e) { ... }
|
延迟初始化
- 如果在类中定义了属性,而没有构造方法为属性赋值,此时可能出现属性值为空的情况,导致无法编译
- 使用
late关键字修饰属性,表示延迟初始化
1 2 3
| class 类名 { late 数据类型 属性名; }
|
命名参数允许空值
- 如果方法的形参列表指定了命名参数,而命名参数没有指定默认值,可以使用
required关键字修饰参数,允许为空值
1 2 3
| 返回值类型 方法名({required 数据类型 形参名}) { ... }
|
完成
参考文献
哔哩哔哩——筱筱知晓