【发布时间】:2022-08-19 02:08:47
【问题描述】:
我正在使用 Getx 将流绑定到 userDataModel。初始化时,从 firestore 数据库中打印该值,但稍后该值为 null。
当尝试使用print(_userDataController.userDataModel.value.foodData); 打印值时,它会提示null。
PS:在之前的项目中,我使用了相同的代码。在那里,它仍然有效。
代码如下
用户模型:
Map? foodData;
UserDataModel({this.foodData});
factory UserDataModel.fromMap({dynamic dbData}) {
return UserDataModel(
foodData: dbData[\'foodData\'],
);
}
}
控制器
class UserDataController extends GetxController {
// ================================= > Stream READ
/// Stream User Model
Rx<UserDataModel> userDataModel = UserDataModel().obs;
/// Stream
Stream<UserDataModel> dbStream() {
return FirebaseFirestore.instance
.collection(\'Users\')
.doc(\'user1\')
.snapshots()
.map(
(ds) {
var _mapData = ds.data();
print(_mapData); // ONINIT THIS DATA IS PRINTING BUT LATER IT PROMPTS THE ABOVE ERROR
UserDataModel extractedModel = UserDataModel.fromMap(dbData: _mapData);
return extractedModel;
},
);
}
/// FN to bind stream to user model
void bindStream() {
userDataModel.bindStream(dbStream());
}
// ================================= > OnInIt
@override
void onInit() {
bindStream();
super.onInit();
}
}
-
我在您的代码中没有看到任何错误。消息“Instance of”并不意味着它是一个错误。每当您打印对象时,都会显示此消息。
-
但是 oninit() 它确实打印了实际值而不是实例。为什么? @emmy-chwan
标签: flutter dart google-cloud-firestore flutter-getx