有两个错误。
未处理的异常:“Null”类型不是“UserModel”类型的子类型 -> 运行应用程序时出现此错误。
LateInitializationError:字段“当前”尚未初始化。 -> 导航到用户页面时出现此错误。
我的猜测是用户模型的当前是问题所在。
一开始很顺利。 关闭应用程序后重新启动应用程序时发生错误。 太伤心了请帮忙
提供者
Future<void> getUser() async {
final user = FirebaseAuth.instance.currentUser;
final userResult = await DbRepo().getUser(user!.uid);
UserModel.current = userResult;
notifyListeners();
return;
}
dbRepo
class DbRepo {
final CollectionReference userCol =
FirebaseFirestore.instance.collection("users");
Future saveUser(UserModel user) async {
try {
await userCol.doc(user.id).set(user.toMap());
return true;
} catch (e) {
return false;
}
}
Future getUser(String id) async {
try {
final dynamic data = await userCol.doc(id).get();
final user = UserModel.fromJson(data.data());
return user;
} catch (e) {
return;
}
}
}
用户模型
class UserModel {
String id;
String email;
String name;
List<int>? userMovieId;
UserModel(
{required this.id,
required this.email,
required this.name,
this.userMovieId});
static late UserModel current;
factory UserModel.fromJson(Map<String, dynamic> json) {
return UserModel(
id: json['id'] == null ? '' : json['id'],
email: json['email'] == null ? '' : json['email'],
name: json['name'] == null ? '' : json['name'],
userMovieId: json['userMovieId'] == null ? [] : json['userMovieId']);
}
Map<String, dynamic> toMap() => {
'id': id,
'email': email,
'name': name,
'userMovieId': userMovieId,
};
}
主屏幕启动
void initState() {
this._tabController = new TabController(length: 3, vsync: this);
Provider.of<AuthProvider>(context, listen: false)
.getUser()
.whenComplete(() => {setState(() {})});
super.initState();
}