1.在所有 Dart 版本中,null 在未初始化的变量里都是默认值,所以你可以这样简化你的代码
int? a = null
可以简化为 int? a
String? name = "Jane";
String? address;
String?
表示可为空
2.要保护可能会为空的属性的正常访问,请在点(.)之前加一个问号(?)
例如 person?.house
person
如果是null 直接返回null,
等价于(person != null) ? person.house : null
- ??=
int? a;
print(a);
int? ab = 3;
a ??= 5; // ??= 为空才赋值 如果 a为空的时候给赋值5
ab ??= 5; // ab 有值所以不会赋值 所以ab还是3
- ??
int ? a;
int b = 1;
print(b ?? 3); //只会输出1 不会为3 其实就是Swift的判空赋值
print(a ?? 12) //此时输出为12
5.集合类型
final aListOfStrings = ["One","Two","Three","Four","Five"]; //list
final aSetOfStrings = {"One","Two","Three","Four","Five","One"}; // set 不允许有重复的元素
final aMapOfStringsToInts = {"One":1,"Two":2,"Three":3,"Four":4,"Five":5};
final aListOfInts = <int>[]; //手动指定类型
final aSetOfInts = <int>{};
final aMapOfIntToDouble = <int, double>{};
6.可选参数 - 可选位置参数永远放在方法参数列表的最后
int sumUpToFive(int a, [int? b, int? c, int? d, int? e]) {
int sum = a;
if (b != null) sum += b;
if (c != null) sum += c;
if (d != null) sum += d;
if (e != null) sum += e;
return sum;
}
- art函数声明如果没有显式声明返回值类型时会默认当做dynamic处理
//不指定返回类型,此时默认为dynamic,不是bool
isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
}