当我运行应用程序时,我从 firebase 中检索了一个对象列表。 在我的 MainPage() 中,我有一个 ListView.builder 来显示所有项目。
我还有一个带有不同按钮的 customDialog,根据按下的按钮,ListView.builder 中的项目必须刷新(删除旧的并加载新的)。
我的想法很简单:
所有点似乎都有效,但是当我调用 setState 方法时,ListView.Builder 会将新项目附加到最旧的项目,但如果我打印我的项目变量,它仅包含新项目。
我该如何解决? 这是我的代码:
showDialog(context: context,
builder: (BuildContext context){
return CustomDialog(
);
}
).then((value) async {
await myItemProvider.loadnewItem(parameter: value.toString());
setState(() {
});
}
);
列表视图:
ListView.builder(
key: UniqueKey(),
itemCount: myItemProvider.itemsList.length,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (_,index){
return MyObject(
parameter: myItemProvider.itemsList[index],
);
}),
供应商:
Future loadnewItem({String uid, String parameter})async{
itemsList = await _myService.getItem(parameter: parameter);
notifyListeners();
}
在助手中:
Future<List<ItemModel>> getItem({String parameter}) async
{
var collectionData = _firestore.collection(collection).where("parameter", isEqualTo:parameter).orderBy("name").limit(4);
if(collectionData != null){
fetchDocumentsParameter(collectionData,parameter);
}
return itemsList;
}
谢谢大家。