在 flutter 中执行 firestore 列表的搜索文本时出错
error while imlpementing search text for the firestore list in flutter
我正在为 firestore 数据库的 flutter 应用程序中的列表中的搜索操作实现以下代码。
当没有执行搜索时,它可以很好地加载列表,但是当我尝试使用相同的搜索操作时,它给我错误
错误:类型 'Query' 不是类型 'Stream'
的子类型
Scaffold(
appBar: AppBar(
elevation: 0,
title: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
child: Card(
child: TextField(
decoration: InputDecoration(
prefixIcon: Icon(Icons.search), hintText: 'Search...'),
onChanged: (val) {
setState(() {
query = val;
});
},
),
),
),
leading: IconButton(
icon: Icon(
Icons.exit_to_app,
color: Colors.red[50],
),
onPressed: () {
logout();
}),
),
body:
Container(
child: Column(
children: [
Container(
child: Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: (query != "" && query != null)
? FirebaseFirestore.instance
.collection('momos_nv')
.orderBy('itemName')
.startAt([query])
.endAt([query + '\uf8ff'])
: FirebaseFirestore.instance.collection("momos_nv").snapshots(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return ListView.builder(
itemCount: snapshot.data.docs.length,
itemBuilder: (context, index){
return ListTile(title:Text(snapshot.data.docs[index]['itemName'],
),
);
});
},
),
),
),
],
),
));
我无法解决它,因为在搜索完成后我无法理解哪里出了问题,我参考了 GitHub 中的任何示例,该示例工作正常,但在复制时同样如此效果不佳。请告知正确的实施方式。
出现错误我刚开始在搜索框中输入内容。
我提到的这个例子来自 Github referred sample code
Container(
child: Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: (query != "" && query != null)
? FirebaseFirestore.instance
.collection('momos_nv')
.orderBy('itemName')
.startAt([query])
.endAt([query + '\uf8ff']).snapshots() ----> you have missed the snapShot here
: FirebaseFirestore.instance.collection("momos_nv").snapshots(),
如果条件
你错过了流中的快照
请看下面的steam情况解决
我正在为 firestore 数据库的 flutter 应用程序中的列表中的搜索操作实现以下代码。
当没有执行搜索时,它可以很好地加载列表,但是当我尝试使用相同的搜索操作时,它给我错误
错误:类型 'Query' 不是类型 'Stream'
的子类型Scaffold(
appBar: AppBar(
elevation: 0,
title: Container(
padding: EdgeInsets.symmetric(horizontal: 10),
child: Card(
child: TextField(
decoration: InputDecoration(
prefixIcon: Icon(Icons.search), hintText: 'Search...'),
onChanged: (val) {
setState(() {
query = val;
});
},
),
),
),
leading: IconButton(
icon: Icon(
Icons.exit_to_app,
color: Colors.red[50],
),
onPressed: () {
logout();
}),
),
body:
Container(
child: Column(
children: [
Container(
child: Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: (query != "" && query != null)
? FirebaseFirestore.instance
.collection('momos_nv')
.orderBy('itemName')
.startAt([query])
.endAt([query + '\uf8ff'])
: FirebaseFirestore.instance.collection("momos_nv").snapshots(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return ListView.builder(
itemCount: snapshot.data.docs.length,
itemBuilder: (context, index){
return ListTile(title:Text(snapshot.data.docs[index]['itemName'],
),
);
});
},
),
),
),
],
),
));
我无法解决它,因为在搜索完成后我无法理解哪里出了问题,我参考了 GitHub 中的任何示例,该示例工作正常,但在复制时同样如此效果不佳。请告知正确的实施方式。
出现错误我刚开始在搜索框中输入内容。
我提到的这个例子来自 Github referred sample code
Container(
child: Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: (query != "" && query != null)
? FirebaseFirestore.instance
.collection('momos_nv')
.orderBy('itemName')
.startAt([query])
.endAt([query + '\uf8ff']).snapshots() ----> you have missed the snapShot here
: FirebaseFirestore.instance.collection("momos_nv").snapshots(),
如果条件
你错过了流中的快照请看下面的steam情况解决