【问题标题】:How add and remove items from a List using Flutter provider package?如何使用 Flutter 提供程序包从列表中添加和删除项目?
【发布时间】: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:(_)=&gt;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

【问题讨论】:

  • 格式正确。

标签: flutter dart


【解决方案1】:

在 bookMarkedItem 函数中使项目列表为空,如下所示:_bookMarkedItems = [];

【讨论】:

  • 那行得通。我现在明白了。我们无法修改作为实例成员的原始 List,我们需要将其指向 getter 中的新 List。
【解决方案2】:

尝试更改 isBookMarked = !isBookMarked

【讨论】:

  • 这是我写这篇文章时的一个错字。
猜你喜欢
  • 2021-03-20
  • 2021-11-29
  • 2021-07-09
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多