您假设这是我作为示例代码的类(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/