空安全

  • 减少数据异常错误
  • 提高程序性能

默认不可空

String title = 'ducafecat';

type? 可空

String? title = null;

value! 值保证不为空,主观上

String? title = 'ducafecat';
String newTitle = title!;

value?. 不为空才执行

String? title = 'ducafecat';
bool isEmpty = title?.isEmpty();

value?? 如果空执行

String? title = 'ducafecat';
String newTitle = title ?? 'cat';

late 声明

延迟加载修饰符

声明一个不可空的变量,并在声明后初始化。

late String description;

void main() {
  description = 'Feijoada!';
  print(description);
}

late 类成员延迟初始

class WPHttpService extends GetxService {
  late final Dio _dio;

  
  void onInit() {
    ...

    _dio = Dio(options);

    ...
  }

加上 late 后就可以不用构造函数的时候初始化了

List、泛型

  List<String?>? l;
  l = [];
  l.add(null);
  l.add('a');
  print(l);
类型集合是否可空数据项是否可空
List<String>nono
List<String>?yesno
List<String?>noyes
List<String?>?yesyes

Map

  Map<String, String?>? m;
  m = {};
  m['a'] = 'b';
  m['b'] = null;
  print(m);
类型集合是否可空数据项是否可空
Map<String, int>nono*
Map<String, int>?yesno*
Map<String, int?>noyes
Map<String, int?>?yesyes

* 可能返回空

Last Updated:
Contributors: ducafecat