Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在Listview builder中使用的querysnapshot中应用搜索过滤器_Flutter_Search_Filter_Snapshot - Fatal编程技术网

Flutter 如何在Listview builder中使用的querysnapshot中应用搜索过滤器

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

这是我的firebase数据请求代码 这是我基于qn.docs的未来构建器 如何在snapshot和ListView.builder中搜索以使用筛选集。 以前,我使用的是本地列表,用于在Itemchanged上搜索as 提前感谢您的指导。 我是个新手。请举例说明

    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,我觉得现在不可用。