dart - Dart 搜索,从数据模型列表中添加和删除

标签 dart collections

您假设这是我作为示例代码的类(class):

class SelectedPage {
  final String username;
  final String pageProfileImage;

  SelectedPage(this.username, this.pageProfileImage);
}

在此类中,当模型数据不在SelectedPage列表中时,我想将模型数据作为_selectedPage添加,并且当该模型在列表中时,我应该从列表中删除该数据,例如,此代码不正确
void main() {
  const String pageName = 'my name';
  final List<SelectedPage> pages = [];

  final SelectedPage newPage =
      SelectedPage(pageName, 'assets/images/my_pic.jpg');
  pages.add(newPage);

  if (pages.where((currentName) => currentName.username.contains(pageName)) !=
      null) {
    pages.remove(newPage);
    print('>>>>>>>>>>>>>> REMOVED');
  } else {
    pages.add(newPage);
    print('>>>>>>>>>>>>>> ADDED');
  }
}

class SelectedPage {
  final String username;
  final String pageProfileImage;

  SelectedPage(this.username, this.pageProfileImage);
}

我想在'my name'中搜索page.selectedPages,即SelectedPage类模型数据,如果'my name'存在于模型中,则应将其从列表中删除,否则应将其作为模型添加到列表中

最佳答案

您拥有的方式将导致对象始终被删除,因为where()会返回List及其刚刚查询的结果,即使它是空List

因此,如果要这样做,则需要查询,然后检查List是否为空。如果是,那么您没有该元素,如果没有,那么您就有。

List query = pages.where((currentName) => currentName.username.contains(pageName)).toList();

  if (query.isNotEmpty) {
    pages.remove(newPage);
    print('>>>>>>>>>>>>>> REMOVED');
  } else {
    pages.add(newPage);
    print('>>>>>>>>>>>>>> ADDED');
  }
}

关于dart - Dart 搜索,从数据模型列表中添加和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61077641/

相关文章:

flutter - Flutter:ReorderableListView更改项目宽度,并忽略圆角边框

Dart - 模拟 Element 类

java - 为什么我的 LinkedList 不包含 addLast() 方法?

c# - 对象是使用 List<T>.Add 复制的,还是简单地使用 "mapped"?

kotlin - linkedSetOf 和 hashSetOf 有什么区别?

flutter - 如何在flutter中应用平移和旋转动画以创建 "cards being flung around"效果

flutter - 以最大宽度/高度展开?

flutter - flutter 自定义矩形

c# - 返回 foreach 中的第一个元素

javascript - 使用 lodash 转换集合