【发布时间】:2022-01-17 15:53:27
【问题描述】:
我正在使用 getX 从 Firebase 获取数据。
我在 2.8 更新之前使用过这个。它工作正常。
class UserController extends GetxController {
final Rx<UserModel> _userModel = UserModel(
email: '',
name: '',
uid: '',
kullaniciAdi: '',
bildirim: 0,
userRole: 0,
).obs;
UserModel get user => _userModel.value;
set user(UserModel value) => _userModel.value = value;
void clear() {
_userModel.value = UserModel(
email: '',
name: '',
uid: '',
kullaniciAdi: '',
bildirim: 0,
userRole: 0,
);
}
}
我可以通过 GetX 或 Obx 小部件观察到这一点。但现在,我不能再这样做了。
这是我获取用户代码的 Firebase 数据库代码:
Future getUserFromDB(String uid) async {
try {
var userData = await _firestore.collection("customers").doc(uid).get();
var map = userData.data();
//debugPrint(map!['email']);
return UserModel.fromData(userData.data());
} on FirebaseException catch (e) {
return e.message;
}
}
这是我的用户模型:
class UserModel {
String? uid;
String? name;
String? email;
int? bildirim;
int? userRole;
String? kullaniciAdi;
String? pphoto;
UserModel({
this.uid,
this.name,
this.email,
this.bildirim,
this.userRole,
this.kullaniciAdi,
this.pphoto,
});
UserModel.fromData(Map<String, dynamic>? dataMap)
: uid = dataMap!['id'],
name = dataMap['name'],
email = dataMap['email'],
bildirim = dataMap['bildirim'],
kullaniciAdi = dataMap['kullaniciAdi'];
Map<String, dynamic> toData() {
return {
'uid': uid,
'name': name,
'email': email,
'userRole': userRole,
'bildirim': bildirim,
'kullaniciAdi': kullaniciAdi,
'pphoto': pphoto,
};
}
}
我想在获取数据后收听这个 userModel。但每当我使用 Obx 或 GetX 小部件时,它们都会返回错误。 这是 GetX 小部件和错误;
GetX<UserController>(
initState: (_) async {
Get.find<UserController>().user = await FirebaseDatabase()
.getUserData(homeController.userVeri!.uid);
},
builder: (_) {
if (_.user.uid != null) {
return Text(
_.user.name.toString(),
style: const TextStyle(
color: Colors.white,
fontSize: 30,
fontWeight: FontWeight.w500),
);
} else {
return const Text("...");
}
},
),
错误是:
Null check operator used on nulls value
【问题讨论】:
-
返回哪个错误?
-
我已将其添加到帖子中。
标签: firebase flutter flutter-getx