Flutter 判断 expr1 是否为null,如果为null的话,就使用默认值 expr

5 min read
  1. ?.

    想要访问表达式的某个属性时,就可以使用这个,可以有效避免 NPE。

    例如:

    var yourName = user?.name;
    

    就等效于:

    var yourName;
    if(user == null){
        yourName = null;
    }else{
        yourName = user.name;
    }
    
  2. ??

    在赋值时,可以使用 ??,若发现为空,可以为其赋默认值。
    例如:

    var yourName = name ?? "Bob";
    

    就是在为 yourName 赋值时,若 name 有值,就使用 name 的值,若 name 为空,则使用默认值 Bob,等效于:

    var yourName;
    if(name == null){
        yourName = "Bob";
    }else{
        yourName = name;
    }
    
  3. ??=

    expr1 ??= expr2 等效于 expr1 = expr1 ?? expr2
    就是判断 expr1 是否为null,如果为null的话,就使用默认值 expr2。
    例如:

    user ??= User();
    

    等效于:

    if(user == null) {
        user = User();
    }