【发布时间】:2020-06-11 17:20:23
【问题描述】:
我在名为“category”的文档中有一个字段,在“category”中我有 6 种不同类型的值(1-6)。我想在不同的屏幕上显示每个值的文档。因此,例如,所有值为 2 的“类别”字段都应显示在屏幕 2 上。我该如何让它工作?
Widget build(BuildContext context) {
return FutureBuilder(
future: FirebaseAuth.instance.currentUser(),
builder: (ctx, futureSnapshot) {
if (futureSnapshot.connectionState == ConnectionState.waiting) {
return const Center(
child: const CircularProgressIndicator(),
);
}
return StreamBuilder(
stream: Firestore.instance
.collection('facts')
.orderBy('category')
.where('category', isEqualTo: '1')
.where('category', isEqualTo: '2')
.where('category', isEqualTo: '3')
.where('category', isEqualTo: '4')
.where('category', isEqualTo: '5')
.where('category', isEqualTo: '6')
.snapshots(),
builder: (ctx, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(
Theme.of(context).colorScheme.deepOrange,
),
),
);
}
final factsDocs = snapshot.data.documents;
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/facts_bg.jpg"),
fit: BoxFit.cover,
),
),
child: Scaffold(
backgroundColor: Colors.transparent,
body: ListView.builder(
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 10),
itemCount: factsDocs.length,
itemBuilder: (ctx, index) =>
_factsList(context, factsDocs[index]),
),
),
);
});
});
}
Widget _factsList(BuildContext context, DocumentSnapshot document) {
return Container(
child: Card(
margin: const EdgeInsets.only(bottom: 16),
elevation: 6,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
color: Colors.white.withOpacity(0.9),
child: Column(
children: [
Column(
children: [
Container(
width: MediaQuery.of(context).size.width,
height: 120,
child: Column(
children: [
Padding(
padding: const EdgeInsets.only(top: 8),
child: ListTile(
title: Container(
child: Text(
document['title'] == null
? ''
: document['title'],
style: whiteH1Txt,
),
),
subtitle: Padding(
padding: const EdgeInsets.only(top: 8),
child: Text(
document['category'] == null
? ''
: document['category'],
style: whiteSubTxt,
),
),
【问题讨论】:
标签: firebase flutter google-cloud-firestore