新特性
- Null safety 翻译成中文的意思是空安全。
- Null safety 可以帮助开发者避免开发中很难发现的错误,并且额外的好处是可以改善性能。
- Flutter2.2.0 (2021年5月19日)开始,Flutter默认开启了Null safety,如果你的项目是在2.2.0之前创建的,需要手动开启Null safety。
- 开启Null safety的方式有两种:
- 在创建项目的时候,勾选Use Null Safety
- 在项目的pubspec.yaml文件中,添加sdk: '>=2.12.0 <3.0.0',然后运行flutter pub get
- ?可空类型
- !类型断言
void main() {
String? name = null;
print(name);
}
void main() {
String? name = null;
print(name!.length);
}
late关键字
- late关键字可以用来修饰变量,表示该变量为延迟初始化,即在声明变量的时候不需要初始化,但是在使用之前必须初始化。
- late关键字只能用来修饰非空变量,不能用来修饰可空变量。
- late关键字可以用来修饰实例变量,也可以用来修饰顶级变量,但是不能用来修饰静态变量。
- late关键字可以用来修饰final变量,但是不能用来修饰const变量。
- late关键字可以用来修饰成员变量,但是不能用来修饰局部变量。
void main() {
late String name;
name = '张三';
print(name);
}
required关键字
- required关键字可以用来修饰命名参数,表示该参数是必须传的。
- required关键字只能用来修饰命名参数,不能用来修饰位置参数。
- required关键字只能用来修饰可空参数,不能用来修饰非空参数。
- required关键字只能用来修饰可选参数,不能用来修饰必选参数。
class Person {
String name;
int age;
Person({required this.name, required this.age});
}
void main() {
Person p = new Person(name: '张三', age: 20);
print(p.name);
print(p.age);
}
name 非必传参数 age必传参数
class Person {
String? name;
int age;
Person({this.name, required this.age});
}
void main() {
Person p = new Person(age: 20);
print(p.name);
print(p.age);
}