gpt4 book ai didi

flutter - 带有 if 语句的 getter 的空安全问题

转载 作者:行者123 更新时间:2023-12-05 04:44:12 25 4
gpt4 key购买 nike

我正在尝试使用代码从 sharedPreferances 中检索用户数据:

User? get user {
String? u = sharedPreferences.getString("user");

if (u == null) {
return null;
} else {
return User.fromJson(jsonDecode(u));
}
}

但我收到错误“getter 'user' 的返回类型是'User?'它不是其 setter “用户”的“用户”类型的子类型。”

我希望能够返回 null,但由于 null 安全性,编译器不允许我这样做。

有人可以告诉我我在这里缺少什么吗?:/

最佳答案

我想你的 setter 的类型是 User ,它是不可空的,但是你的 getter 是 User? ,它是可以空的,即类型是不同的。并且编译器坚持 setter 和 getter 应该具有相同的类型。

class User {

}

class Foo {

set user(User user) {

}

User? get user {
return null;
}
}

因此,解决方法是为 setter 和 getter 使用可为 null 或不可为 null 的类型。

  set user(User? user) {

}

User? get user {
return null;
}

Try it on Dartpad

关于flutter - 带有 if 语句的 getter 的空安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69417582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com