飞镖搜索,从数据模型列表中添加和删除

时间:2020-04-07 10:13:28

标签: dart collections

您认为这是我的课程作为示例代码:

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',我应该从列表中删除它,否则应该是作为模型添加到列表

1 个答案:

答案 0 :(得分:1)

您拥有它的方式将导致对象 始终 被删除,因为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');
  }
}