【发布时间】:2020-10-10 14:09:39
【问题描述】:
基于 firestore 数据库,我创建了自己的用户模型。
class ReceiverModel {
final String id;
final String name;
final String contactNumber;
final String bloodGroup;
final String city;
final String accepted;
ReceiverModel({ this.id, this.name, this.contactNumber, this.bloodGroup, this.city, this.accepted });
}
而且,在我的数据库文件中,我添加了一个流来获取所有数据:
// Receiver List from snapshot
List<ReceiverModel> _receiverListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc){
return ReceiverModel(
id: doc.data['id'] ?? '',
name: doc.data['name'] ?? '',
contactNumber: doc.data['contactNumber'] ?? '',
bloodGroup: doc.data['bloodGroup'] ?? '',
city: doc.data['city'] ?? '',
accepted: doc.data['accepted'] ?? '',
);
}).toList();
}
//get receiverCollection stream
Stream<List<ReceiverModel>> get receivers {
return receiverCollection.snapshots()
.map(_receiverListFromSnapshot);
}
@override
Widget build(BuildContext context) {
return StreamProvider<List<ReceiverModel>>.value(
initialData: List(),
value: ReceiverDatabaseService().receivers,
child: SafeArea(
class _ReceiverListState extends State<ReceiverList> {
@override
Widget build(BuildContext context) {
final receivers = Provider.of<List<ReceiverModel>>(context);
return ListView.builder(
itemCount: receivers.length,
itemBuilder: (context, index) {
return ReceiverTile(receiverModel: receivers[index]);
},
);
}
}
然后我用它通过我的屏幕传递数据,后来我通过一个列表视图显示了所有来自流的数据。无论如何,我的问题是,现在当我显示所有数据时,我想创建一个搜索按钮来显示任何特定的血型或任何特定的城市,而不是所有数据。我该怎么做?
return StreamProvider<List<ReceiverModel>>.value(
initialData: List(),
value: ReceiverDatabaseService().receivers,
【问题讨论】:
标签: database flutter search google-cloud-firestore