我想将Cloud Firestore中的值另存为字符串。我在Dart中使用Flutter。使用MaterialepageRoute构建页面时,我已经能够保存它:
MaterialPageRoute(
builder: (context) => MainScreen(
currentUserId: firebaseUser.uid,
currentUserGender: document['gender'],
currentUserPreference: document['preference'],
)),
但这不是我所有页面的选项,因此我必须寻找其他东西。我想从Firestore数据库中获取值,然后将其另存为字符串,因为我想:
if (currentUserGender == 'male') {
//then do something
}
我能够获得currentUser。这是我的数据库的图片:
https://imgur.com/KL7HX6P
谢谢。
最佳答案
查询用户后,您必须构建模型
Firestore中的每个项目获取都会得到一个键映射,该键为字符串和对象:
因此您必须像这样重新创建对象。 (这是一个例子)
您可以在实体类中创建工厂方法以从json创建对象,也可以从对象创建 map 。
class UsersEntityAdapters implements EntityAdapters<UsersEntity> {
@override
UsersEntity toEntity(Map<String, dynamic> map, String id) {
return new UsersEntity(id,
map['name'],
map['birthday'],
map['gender'],
map['description'],
map['urlPhotoPublic'],
map['urlPhotoStorage'],
nbFaves: map['nbFaves'],
);
}
@override
Map<String, dynamic> toMap(UsersEntity entity) {
final Map<String, dynamic> map = new Map();
map.putIfAbsent('name', () => entity.name);
map.putIfAbsent('birthday', () => entity.birthday);
map.putIfAbsent('gender', () => entity.gender);
map.putIfAbsent('description', () => entity.description);
map.putIfAbsent('urlPhotoPublic', () => entity.urlPhotoPublic);
map.putIfAbsent('urlPhotoStorage', () => entity.urlPhotoStorage);
map.putIfAbsent('deviceToken', () => entity.deviceToken);
map.putIfAbsent('nbFaves', () => entity.nbFaves);
return map;
}
}