首页 > 解决方案 > 如果对象不为空,则调用方法(将空安全与 void 方法一起使用)

问题描述

有没有办法做空这样的事情 打电话给我()? 因为没有void之类的类型?因此调用此方法 null 对象会导致上述错误。


void main(List<String> arguments) {  
     User? user;

     print(user?.callMe());  //This expression has a type of 'void' so its value can't be used.
}
 
class User {
     String name;

     User(this.name);
        
     void? callMe() { 
         print('Hello, $name');
     }      
      
     String? foo(){ // sound null safety String method
         return name;
     }

}

标签: flutterdartdart-null-safety

解决方案


您应该从'方法返回 a String(或者String?如果您愿意,但在这种情况下不是必需的):UsercallMe

void main(List<String> arguments) {  
    User? user;

    print(user?.callMe());
}

class User {
    String name;

    User(this.name);
    
    String callMe() { 
        return 'Hello, $name';
    }      
}

这是因为print方法接受 anObject作为其参数,并且void不是一个对象,而是String一个Object.


推荐阅读