Flutter 如何在Listview builder中使用的querysnapshot中应用搜索过滤器
这是我的firebase数据请求代码 这是我基于qn.docs的未来构建器 如何在snapshot和ListView.builder中搜索以使用筛选集。 以前,我使用的是本地列表,用于在Itemchanged上搜索as 提前感谢您的指导。 我是个新手。请举例说明Flutter 如何在Listview builder中使用的querysnapshot中应用搜索过滤器,flutter,search,filter,snapshot,Flutter,Search,Filter,Snapshot,这是我的firebase数据请求代码 这是我基于qn.docs的未来构建器 如何在snapshot和ListView.builder中搜索以使用筛选集。 以前,我使用的是本地列表,用于在Itemchanged上搜索as 提前感谢您的指导。 我是个新手。请举例说明 Future <QuerySnapshot> getSpeakernames() async { QuerySnapshot qn = await FirebaseFirestore.instanc
Future <QuerySnapshot> getSpeakernames() async {
QuerySnapshot qn = await
FirebaseFirestore.instance.collection('speakernames').orderBy('speakername').get();
return qn;
}
Center(
child: Container(
child: ListView.builder(
itemCount: snapshot.data.docs.length,
itemBuilder: (BuildContext context, int index) {
DocumentSnapshot data = snapshot.data.docs[index];
return ListTile(title: Text(data.get("speakername")),
subtitle: Text(data.get("speakerdegree")), )
onItemChanged(String value) {
setState(() {
data.get("speakername").
newspeakernames = speakernames
.where((string) =>
string.toLowerCase().contains(value.toLowerCase()))
.toList();
});
}
Future getSpeakernames()异步{
QuerySnapshot qn=等待
FirebaseFirestore.instance.collection('speakername').orderBy('speakername').get();
返回qn;
}
居中(
子:容器(
子项:ListView.builder(
itemCount:snapshot.data.docs.length,
itemBuilder:(构建上下文,int索引){
DocumentSnapshot data=snapshot.data.docs[索引];
返回ListTile(标题:Text(data.get(“speakername”),
字幕:文本(data.get(“speakergree”),)
onItemChanged(字符串值){
设置状态(){
data.get(“speakername”)。
新闻发言人姓名
。其中((字符串)=>
string.toLowerCase().contains(value.toLowerCase())
.toList();
});
}
您可以使用Firestore的“.Where”属性
如下
Future <QuerySnapshot> getSpeakernames() async {
QuerySnapshot qn = await FirebaseFirestore.instance.collection('speakernames')
.where('speakername' , isEqualTo : SubramanianV).orderBy('speakername').get();
return qn;
}
Future getSpeakernames()异步{
QuerySnapshot qn=等待FirebaseFirestore.instance.collection('speakernames'))
.where('speakername',isEqualTo:SubramanianV).orderBy('speakername').get();
返回qn;
}
您可以使用ISGreater than或equalto
例如:
class doctorName {
getDoctorByName(String doctorName, String last) async {
return await Firestore.instance
.collection("Doctor")
.where("name", isGreaterThanOrEqualTo: doctorName)
.where("name", isLessThan: last)
//.where("name", isEqualTo: doctorName)
.getDocuments();
}
}
但是,我想在初次提取后过滤说话人的完整列表。每次搜索都不需要从firestore中提取数据。通过搜索文本字段过滤接收到的数据就足够了。是的,你可以这样做,方法是将“speakername”改为字符串,并给出文本字段的字符串值,然后使用SetState感谢你的回复。但是我实际上需要的是某种通配符搜索。当我键入“ma”时,它应该返回Mahesh、mani、mark等。即使说话人的名字是Subramanian,搜索“ma”或“man”或“ubra”时也应该返回Subramanian,我觉得现在不可用。