以下代码行有两个问号:
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
什么意思?
??
双问号运算符表示“如果为空”。例如,采用以下表达式。
String a = b ?? 'hello';
这意味着a
等于b
,但如果b
为null,那么a
等于'hello'
。
另一个相关的运营商是??=
。例如:
b ??= 'hello';
这意味着如果b
为null,则将其设置为hello
。否则,请勿更改它。
参考
条款
Dart 1.12 release news将以下内容统称为null-aware运算符:
??
- 如果为null运算符??=
- 无效的分配x?.p
- 无效的访问权限x?.m()
- null-aware方法调用