使用Flutter Firestore Firebase将值另存为字符串

时间:2018-10-26 21:37:30

标签: 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 
}

我不知道如何执行此操作,我曾考虑过使用Class,也许与Firebase一起使用“获取”功能,但没有一个起作用。我不太确定如何执行此操作,因此不胜感激。我能够获得currentUser。这是我的数据库的图片:

https://imgur.com/KL7HX6P

谢谢。

1 个答案:

答案 0 :(得分:1)

一个最小示例:要获取单个文档字段。在代码中用您自己的名字交换“收藏夹和文档”名称。

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class GetUser extends StatefulWidget {
  @override
  _GetUserState createState() => _GetUserState();
}

class _GetUserState extends State<GetUser> {
  Map<String, dynamic> userDetails = {};

  Future<Null> getUser() async {
    await Firestore.instance
        .collection('users') // Your Collections Name
        .document('eMAE4XF9cTYS12MpfOuWBW4P2WH3')  // Your user Document Name
        .get()
        .then((val) {
      userDetails.addAll(val.data);
    }).whenComplete(() {
      print('Data Fetched');
      setState(() {});
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            RaisedButton(
              textColor: Colors.white,
              color: Theme.of(context).accentColor,
              onPressed: () async {
                await getUser();
              },
              child: Text('Get User Detail from Cloud'),
            ),
            userDetails.length > 0
                ? Column(
                    children: <Widget>[
                      Text('${userDetails['gender']}'),
                      Text('${userDetails['id']}'),
                      Text('${userDetails['nickname']}'),
                      userDetails['gender'] == 'male'
                          ? Text('Its Boy')
                          : Text('Girl'),
                    ],
                  )
                : Text('No user Data, Please Fetch'),
          ],
        ),
      ),
    );
  }
}