【发布时间】:2021-03-20 18:52:18
【问题描述】:
过滤器的变化没有刷新显示数据,我如何要求futurebuilder根据新的where()查询重新构建?
这是我的代码:
FutureBuilder<QuerySnapshot>(
future:FirebaseFirestore.instance.collection("Posts").where('region', isEqualTo: filterSelected).orderBy('date', descending: true).get(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot)
{
return ListView.builder(
itemCount: snapshot.data.docs.length,
itemBuilder: (context, index){
DocumentSnapshot Post = snapshot.data.docs[index];
.........)
filterSelected 是来自我的过滤器屏幕的变量回调:
onPressed: () =>
{
Navigator.push<dynamic>(
context,
MaterialPageRoute<dynamic>(
builder: (BuildContext context) => FiltersScreen((value){
return filterSelected = value;
}),
fullscreenDialog: true),
),
}
我的预期结果是一旦用户点击过滤器,ListViewer 将自动更新
我读过几篇文章说使用 async, setState, get().then() ,不确定哪个是更好的解决方案以及如何添加到代码中,不胜感激!
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore flutter-futurebuilder