您认为这是我的课程作为示例代码:
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'
,我应该从列表中删除它,否则应该是作为模型添加到列表
答案 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');
}
}