Flutter 在Firestore Flatter中搜索

Flutter 在Firestore Flatter中搜索,flutter,google-cloud-firestore,Flutter,Google Cloud Firestore,我正在尝试为UI创建搜索栏,当我尝试什么都不搜索时,它正在发生。我把一些情况,如错误或没有发现或做什么,用户界面仍然与白色屏幕时,我搜索。我的代码有什么问题 import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flappy_search_bar/flappy_search_bar.dart'; import 'package:flutter/material.dart'; class Searchbar

我正在尝试为UI创建搜索栏,当我尝试什么都不搜索时,它正在发生。我把一些情况,如错误或没有发现或做什么,用户界面仍然与白色屏幕时,我搜索。我的代码有什么问题

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flappy_search_bar/flappy_search_bar.dart';
import 'package:flutter/material.dart';

class Searchbar extends StatefulWidget {
  @override
  SearchBarState createState() => SearchBarState();
}

class SearchBarState extends State<Searchbar> {
  TextEditingController textEditingController = TextEditingController();
  final database = Firestore.instance;
  String searchString;

  @override
  Widget build(BuildContext context) {

    return Scaffold(
        body: Container(
            child: Column(
      children: <Widget>[
        Expanded(
          child: Column(
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.all(15.0),
                child: Container(
                  child: TextField(
                    onChanged: (val) {
                      setState(() {
                        searchString = val.toLowerCase();
                      });
                    },
                    controller: textEditingController,
                    decoration: InputDecoration(
                        suffixIcon: IconButton(
                            icon: Icon(Icons.clear),
                            onPressed: () => textEditingController.clear()),
                        hintText: " Search name here ",
                        hintStyle: TextStyle(
                            fontFamily: 'Antra', color: Colors.blueGrey)),
                  ),
                ),
              ),
              Expanded(
                  child: StreamBuilder<QuerySnapshot>(
                stream: (searchString == null || searchString.trim() == '')
                    ? Firestore.instance.collection('Users').snapshots()
                    : Firestore.instance
                        .collection('Users')
                        .where('name', arrayContains: searchString)
                        .snapshots(),
                builder: (context, snapshot) {
                  if (snapshot.hasError) {
                    return Text('We got an error ${snapshot.error}');
                  }
                  switch (snapshot.connectionState) {
                    case ConnectionState.waiting:
                      return SizedBox(
                        child: Center(
                            // child: Lottie.asset('animations/loading2.json'),
                            ),
                      );
                    case ConnectionState.none:
                      return Text('Oops no data present');

                    case ConnectionState.done:
                      return Text('We are done');

                    default:
                      return new ListView(
                          children: snapshot.data.documents
                              .map((DocumentSnapshot document) {
                        return new ListTile(
                          title: Text(document['Users']),
                        );
                      }).toList());
                  }
                },
              ))
            ],
          ),
        )
      ],
    )));
  }
}
import'包:cloud_firestore/cloud_firestore.dart';
导入“package:flappy_search_bar/flappy_search_bar.dart”;
进口“包装:颤振/材料.省道”;
类Searchbar扩展StatefulWidget{
@凌驾
SearchBarState createState()=>SearchBarState();
}
类SearchBarState扩展状态{
TextEditingController TextEditingController=TextEditingController();
最终数据库=Firestore.instance;
字符串搜索字符串;
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
子:列(
儿童:[
扩大(
子:列(
儿童:[
填充物(
填充:常数边集全部(15.0),
子:容器(
孩子:TextField(
一旦更改:(val){
设置状态(){
searchString=val.toLowerCase();
});
},
控制器:textEditingController,
装饰:输入装饰(
后缀:图标按钮(
图标:图标(图标。清除),
按下时:()=>textEditingController.clear()),
hintText:“在此搜索名称”,
hintStyle:TextStyle(
fontFamily:“Antra”,颜色:Colors.蓝灰色,
),
),
),
扩大(
孩子:StreamBuilder(
流:(searchString==null | | searchString.trim()=='')
?Firestore.instance.collection('Users').snapshots()
:Firestore.instance
.collection('用户')
.where('name',arrayContains:searchString)
.snapshots(),
生成器:(上下文,快照){
if(snapshot.hasError){
返回文本('我们得到一个错误${snapshot.error}');
}
交换机(快照.连接状态){
案例连接状态。正在等待:
返回大小框(
儿童:中心(
//子项:Lottie.asset('animations/loading2.json'),
),
);
案例连接状态。无:
返回文本(“Oops无数据存在”);
案例连接状态。完成:
返回文本(“我们完成了”);
违约:
返回新的ListView(
子项:snapshot.data.documents
.map((文档快照文档){
返回新的ListTile(
标题:文本(文档[‘用户]),
);
}).toList());
}
},
))
],
),
)
],
)));
}
}
这是Firestore:
我想按名称搜索用户,并将其添加到我的代码中,但我不知道为什么它不起作用

数据库中的名称不是数组,因此必须使用equal或将名称更改为array@Merym我更改了.where('name',isEqualTo:searchString),但仍然得到了类似文本的屏幕(document['Users']),更改为文本(document.data()['name']),我在document.datayour name中遇到错误。数据库中的名称不是数组,因此必须使用equal或将名称更改为array@Merym我更改了。where('name',isEqualTo:searchString),但仍然得到了类似文本的屏幕(document['Users')),更改为文本(document.data()['name']),我在document.data处得到了错误