带有 if 语句的 getter 的 null 安全问题
null safety issue for getter with if-statment
我正在尝试使用代码从 sharedPreferances 中检索用户数据:
User? get user {
String? u = sharedPreferences.getString("user");
if (u == null) {
return null;
} else {
return User.fromJson(jsonDecode(u));
}
}
但我收到错误 “getter 'user' 的 return 类型是 'User?',它不是该类型的子类型'User' setter 'user'."
我希望能够 return null 但编译器不允许我这样做,因为 null 安全。
有人可以告诉我我在这里缺少什么吗?:/
我想你的 setter 的类型是 User
,它不能为空,但是你的 getter 是 User?
,它可以为空,即类型不同。并且编译器坚持 setter 和 getter 应该具有相同的类型。
class User {
}
class Foo {
set user(User user) {
}
User? get user {
return null;
}
}
因此,解决方法是对 setter 和 getter 使用可空或不可空类型。
set user(User? user) {
}
User? get user {
return null;
}
我正在尝试使用代码从 sharedPreferances 中检索用户数据:
User? get user {
String? u = sharedPreferences.getString("user");
if (u == null) {
return null;
} else {
return User.fromJson(jsonDecode(u));
}
}
但我收到错误 “getter 'user' 的 return 类型是 'User?',它不是该类型的子类型'User' setter 'user'."
我希望能够 return null 但编译器不允许我这样做,因为 null 安全。
有人可以告诉我我在这里缺少什么吗?:/
我想你的 setter 的类型是 User
,它不能为空,但是你的 getter 是 User?
,它可以为空,即类型不同。并且编译器坚持 setter 和 getter 应该具有相同的类型。
class User {
}
class Foo {
set user(User user) {
}
User? get user {
return null;
}
}
因此,解决方法是对 setter 和 getter 使用可空或不可空类型。
set user(User? user) {
}
User? get user {
return null;
}