flutter - 将 Firebase 用户模型升级为空安全
问题描述
我终于冒险将我的应用程序升级到 Null Safety,但在升级以下代码时遇到问题。
(如果不是很明显,我将 Firebase User 模型映射到本地 AppUser 模型,并将其用作整个应用程序的身份验证包装器。)
class AuthService with ChangeNotifier {
final FirebaseAuth _auth = FirebaseAuth.instance;
late AuthResultStatus _authStatus;
Stream<AppUser> get appUser {
return _auth.userChanges().map(_appUserFromFirebaseUser);
}
AppUser _appUserFromFirebaseUser(User user) {
return user != null
? AppUser(
uid: user.uid,
creationTime: user.metadata.creationTime,
email: user.email,
emailVerified: user.emailVerified,
)
: null;
}
}
class AppUser {
final String? uid;
final DateTime? creationTime;
final String? email;
final bool? emailVerified;
AppUser({
this.uid,
this.creationTime,
this.email,
this.emailVerified,
});
}
如何返回本地 AppUser 模型或 null?感谢您的指点。
解决方案
你自己说过,你想要一个AppUser
或空,就是这样AppUser?
。只需在方法和流中进行此更改。
class AuthService with ChangeNotifier {
final FirebaseAuth _auth = FirebaseAuth.instance;
late AuthResultStatus _authStatus;
Stream<AppUser?> get appUser {
return _auth.userChanges().map(_appUserFromFirebaseUser);
}
AppUser? _appUserFromFirebaseUser(User user) {
return user != null
? AppUser(
uid: user.uid,
creationTime: user.metadata.creationTime,
email: user.email,
emailVerified: user.emailVerified,
)
: null;
}
}
推荐阅读
- c++11 - cuda如何拼接图像?
- c++ - 在 OneDrive For Business (OFB) 中的现有文件上使用 OPEN_ALWAYS 的 CreateFile 失败,因为 ERROR_ACCESS_DENIED
- stripe-payments - Opayo PI API 中的 CardIdentifer
- android - 它无法发出 http 请求,而 esp32 正确充当服务器,它也使用 WIFI 连接到手机
- excel-formula - ARRAY_CONSTRAIN 和 ARRAYFORMULA 有什么作用?
- bash - 不能再在 ssh 服务器上运行 bash 脚本
- swift - Swift:在函数中使用协议和泛型有什么区别?
- c# - 如何让敌人暂时停止追击玩家
- python - 如何将新元素插入弹出列表?
- angular - 为什么单击 zeppelin-web-angular 0.10.0 中的设置时表格没有任何更改或功能