-
?.
想要访问表达式的某个属性时,就可以使用这个,可以有效避免 NPE。
例如:
var yourName = user?.name;
就等效于:
var yourName; if(user == null){ yourName = null; }else{ yourName = user.name; }
-
??
在赋值时,可以使用
??
,若发现为空,可以为其赋默认值。
例如:var yourName = name ?? "Bob";
就是在为 yourName 赋值时,若 name 有值,就使用 name 的值,若 name 为空,则使用默认值 Bob,等效于:
var yourName; if(name == null){ yourName = "Bob"; }else{ yourName = name; }
-
??=
expr1 ??= expr2
等效于expr1 = expr1 ?? expr2
就是判断 expr1 是否为null,如果为null的话,就使用默认值 expr2。
例如:user ??= User();
等效于:
if(user == null) { user = User(); }
Flutter 判断 expr1 是否为null,如果为null的话,就使用默认值 expr
5 min read