新特性

  1. Null safety 翻译成中文的意思是空安全。
  2. Null safety 可以帮助开发者避免开发中很难发现的错误,并且额外的好处是可以改善性能。
  3. Flutter2.2.0 (2021年5月19日)开始,Flutter默认开启了Null safety,如果你的项目是在2.2.0之前创建的,需要手动开启Null safety。
  4. 开启Null safety的方式有两种:
    1. 在创建项目的时候,勾选Use Null Safety
    2. 在项目的pubspec.yaml文件中,添加sdk: '>=2.12.0 <3.0.0',然后运行flutter pub get
  5. ?可空类型
  6. !类型断言
// ?可空类型
void main() {
  String? name = null;
  print(name);
}

// !类型断言
void main() {
  String? name = null;
  print(name!.length);
}

late关键字

  1. late关键字可以用来修饰变量,表示该变量为延迟初始化,即在声明变量的时候不需要初始化,但是在使用之前必须初始化。
  2. late关键字只能用来修饰非空变量,不能用来修饰可空变量。
  3. late关键字可以用来修饰实例变量,也可以用来修饰顶级变量,但是不能用来修饰静态变量。
  4. late关键字可以用来修饰final变量,但是不能用来修饰const变量。
  5. late关键字可以用来修饰成员变量,但是不能用来修饰局部变量。
// late关键字
void main() {
  late String name;
  name = '张三';
  print(name);
}

required关键字

  1. required关键字可以用来修饰命名参数,表示该参数是必须传的。
  2. required关键字只能用来修饰命名参数,不能用来修饰位置参数。
  3. required关键字只能用来修饰可空参数,不能用来修饰非空参数。
  4. required关键字只能用来修饰可选参数,不能用来修饰必选参数。

class Person {
  String name;
  int age;
  Person({required this.name, required this.age});
}

// required关键字
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});
}

// required关键字
void main() {
  Person p = new Person(age: 20);
  print(p.name);
  print(p.age);
}

results matching ""

    No results matching ""