我想将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。这是我的数据库的图片:
谢谢。
答案 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'),
],
),
),
);
}
}