flutter - 在实际搜索发生之前在页面加载时从 Firestore 中提取的值
问题描述
我想知道为什么下面的代码会在页面加载时从 Firestore 中提取值,即使我没有输入任何搜索词。如果我开始输入匹配的搜索值,我也看不到任何结果。它现在以相反的方式工作。我希望它仅在用户输入搜索词时才从 Firestore 中提取值。请指教!
class _ConversationsState extends State<Conversations> {
String _searchTerm ='';
Future<void> _signOut() async {
try {
await FirebaseAuth.instance.signOut();
} catch (e) {
print(e); // TODO: show dialog with error
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
TextFormField(
keyboardType: TextInputType.text,
decoration: InputDecoration(
border: OutlineInputBorder(), hintText: 'Search'),
onChanged: (value) {
setState(() {
_searchTerm = value.trim();
});
},
),
StreamBuilder(
stream: (_searchTerm != "") ? FirebaseFirestore.instance
.collection('users')
.where('email', arrayContains: _searchTerm )
.snapshots() : FirebaseFirestore.instance.collection("users").snapshots(),
builder: (ctx, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
}
final results = snapshot.data.docs;
print(results.length);
return ListView.builder(
shrinkWrap: true,
itemCount: results.length,
itemBuilder: (ctx, index) => Text(
results[index].data()['email'],
//chatDocs[index].data()['email'] == user.uid,
),
);
})
],
),
);
}
解决方案
尝试在此处反转您的三元运算符
FirebaseFirestore.instance .collection('users') .where('email', arrayContains: _searchTerm ) .snapshots() : FirebaseFirestore.instance.collection("users").snapshots(),
在
FirebaseFirestore.instance.collection("users").snapshots() : FirebaseFirestore.instance .collection('users') .where('email', arrayContains: _searchTerm ) .snapshots()
推荐阅读
- node.js - 提供 node_modules 中文件的正确方法
- javascript - $(this).attr('href') 返回未定义
- node.js - 如何将图像原始数据转换为图像
- visual-studio - Visual Studio 2017 去实现不适用于 .net 标准库
- javascript - 如何生成一个介于 1 和 10 之间但不等于当前 no 或当前值的唯一 no?
- python - codecov 无法使用 pytest 收集数据 - “Coverage.py 警告:未收集数据。”
- php - mysql IN子句中的大数组内爆显示由于长度而出错
- reactjs - 如何在我的应用程序中编写 redux connect 和 withCookies?
- ios - Forest 应用程序之类的功能,它检测到您已离开应用程序
- node.js - Dynamodb 得到大约 10,000 t0 30,000 条记录 nodejs