【发布时间】:2021-03-16 17:33:17
【问题描述】:
您好,我正在尝试将项目添加到列表 _bookMarkedItems。
class Item with ChangeNotifer{
String id;
String title;
bool isBookMarked;
Item(this.id,this.title,this.isBookMarked);
void toggleBookMark(){
isBookMarked=!isBookMarked;
notifyListneres();
}
}
物品类
class Items with ChangeNotifier{
//recommendedBooks
List<Item> _recommendedItems=[
Item('1','Groccery'),
Item('1','Groccery'),
];
//Recommended
List<Item> _discoverNew=[
Item('1','Groccery'),
Item('1','Groccery'),
];
List<Item> _bookMarkedItems=[];
//getters
List<Item> get recommendedItems{
return [..._recommendedItems];
}
List<Item> get discoverNew{
return [..._discoverNew];
}
List<Item> get bookMarkedItems{
_recommendedItems.forEach((item){
if(item.isBookMarked)
_bookMarkedItems.add(item);
});
_discoverNew.forEach((item){
if(item.isBookMarked)
_bookMarkedItems.add(item);
});
return [..._bookMarkedItems];
}
}
当我在 homescreen.dart 中点击来自 _discoverNew 或 _recommendedItems 的任何项目时。
//It builds the bookMarkedItems
它将它们添加到_bookMarkedItems。
但是当我返回主屏幕并再次点击该项目时。
//It does not builds the bookMarkedItems
它不会更新 List_bookMarkedItems 中的 and not REMOVE 项目。
(这是我不明白的)。
我可以从主页添加更多项目,但不能删除它们。
在 MyApp 上面 myhomepage.dartChangeNotifierProvider(create:(_)=>Items(),..
myitems.dart
Widget build(BuildContext context) {
var savedItems= Provider.of<Items>(context).bookMarkedItems;
print("**************Building savedItem List");
return Scaffold(
body: Container(```
[1]: https://i.stack.imgur.com/eIS8X.png
【问题讨论】:
-
格式正确。