我想将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;
}
}

10-02 07:17