Flutter Firestore将值另存为字符串

时间:2018-11-13 09:06:06

标签: firebase dart flutter google-cloud-firestore

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

谢谢。

1 个答案:

答案 0 :(得分:0)

查询用户后,您必须构建模型 Firestore中的每个项目获取都会生成一个键映射,该键为字符串和对象: 因此您必须像这样重新创建对象。 (这是一个例子) 您可以在实体类中创建工厂方法以从json创建对象,也可以从对象创建地图。

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;
}
}