如何在 flutter 中从 Firestore 中检索当前用户信息
How to retrieve current user information from Firestore in flutter
下面的代码将从集合中检索所有信息,但我只想检索当前用户信息。我该怎么做?
class Booking extends State<BookingDetails> {
final databaseReference = Firestore.instance;
var firebaseUser = FirebaseAuth.instance.currentUser();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Appbar"),
),
body: Center(
child: Container(
padding: const EdgeInsets.all(10.0),
child: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('User1').snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return new Text('Loading...');
default:
return new ListView(
children: snapshot.data.documents
.map((DocumentSnapshot document) {
return new CustomCard(
title: document['name'],
description: document['phno'],
);
}).toList(),
);
}
},
)),
),
);
}
}
我想为一个用户存储多个文档,我想从 Firestore 中检索并仅显示他的文档,该怎么做?
如果要检索当前用户的信息,那么就必须检索一个文档。例如,如果您具有以下结构:
User1 (collection) --> userID (document)
然后你需要做以下事情:
Stream<DocumentSnapshot> getData()async*{
FirebaseUser user = await FirebaseAuth.instance.currentUser();
yield* Firestore.instance.collection('User1').where("userId", isEqualTo: user.uid).snapshots();
}
那么你可以这样做:
body: Center(
child: Container(
padding: const EdgeInsets.all(10.0),
child: StreamBuilder<QuerySnapshot>(
stream: getData(),
下面的代码将从集合中检索所有信息,但我只想检索当前用户信息。我该怎么做?
class Booking extends State<BookingDetails> {
final databaseReference = Firestore.instance;
var firebaseUser = FirebaseAuth.instance.currentUser();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Appbar"),
),
body: Center(
child: Container(
padding: const EdgeInsets.all(10.0),
child: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('User1').snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return new Text('Loading...');
default:
return new ListView(
children: snapshot.data.documents
.map((DocumentSnapshot document) {
return new CustomCard(
title: document['name'],
description: document['phno'],
);
}).toList(),
);
}
},
)),
),
);
}
}
我想为一个用户存储多个文档,我想从 Firestore 中检索并仅显示他的文档,该怎么做?
如果要检索当前用户的信息,那么就必须检索一个文档。例如,如果您具有以下结构:
User1 (collection) --> userID (document)
然后你需要做以下事情:
Stream<DocumentSnapshot> getData()async*{
FirebaseUser user = await FirebaseAuth.instance.currentUser();
yield* Firestore.instance.collection('User1').where("userId", isEqualTo: user.uid).snapshots();
}
那么你可以这样做:
body: Center(
child: Container(
padding: const EdgeInsets.all(10.0),
child: StreamBuilder<QuerySnapshot>(
stream: getData(),