Dart поиск, добавление и удаление из списка моделей данных - PullRequest
0 голосов
/ 07 апреля 2020

вы предполагаете, что это мой класс в качестве примера кода:

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 Ответ

1 голос
/ 07 апреля 2020

То, как вы это сделаете, приведет к удалению объекта всегда , поскольку 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');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...