Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart搜索,从数据模型列表中添加和删除_Dart_Collections - Fatal编程技术网

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

Dart搜索,从数据模型列表中添加和删除,dart,collections,Dart,Collections,您假设这是我的类作为示例代码: class SelectedPage { final String username; final String pageProfileImage; SelectedPage(this.username, this.pageProfileImage); } 在这个类中,我想将模型数据添加为SelectedPage,当它不在SelectedPage列表中时,并且当这个模型在列表中时,我应该从列表中删除它,例如此代码不正确的部分 void main()

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

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);
}

我想在page.selectedPages中搜索“我的名字”。selectedPages即selectedPages类模型数据,如果模型中存在“我的名字”,我应该将其从列表中删除,否则应将其作为模型添加到列表中,您使用它的方式将导致对象始终被删除,因为where将返回一个列表,其中包含您刚刚进行的查询的结果,即使它是一个空列表

因此,如果您想这样做,您需要查询并检查列表是否为空。如果是,那么你没有那个元素,如果没有,那么你有

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

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

page.selectedPages.map用于什么?如果您想查找某个内容是否存在,请使用contains或where@pskink这就是我们的例子ChangeNotifierSelectablePage@pskinkpage.selectedPages.containspageName不正确,总是添加到列表中。我问您为什么使用list.map方法?您知道什么时候应该使用它吗?@pskink我尝试在列表中逐行搜索,并检查当前保存的模型是否与我的名字相同