#flutter #dart
#flutter #dart
Вопрос:
class Object1 {
final String id;
List<Object1list> lists = [];
Object1({this.id, this.lists});
class Object1list {
final String id;
final String item;
Object1list({this.id});
}
List<String> searchlist = ['object1','object2','object3'];
Что я хочу сделать, так это выполнить поиск элементов «object1list» для «любых» совпадений с элементами «searchlist» и
вернуть его как функцию contain, но я не знаю, как, что-то вроде:
return ???.contains(???)
Кто-нибудь может мне помочь?
Ответ №1:
Приведенная ниже функция поможет вам получить совпадающие элементы:
bool doSearch(List<String> searchlist, List<String> lists) {
List<String> matched = [];
for (String s in searchlist) {
if (lists.contains(s)) {
matched.add(s);
}
//else {
// return false; // Uncomment these lines if you want "lists" to contain all searched items
//}
}
return matched.length > 0; // This for 0 or more items matched
}
Комментарии:
1. мне нужно вернуть его как логическое значение, поскольку .contains — это функция bool. Вы хотели, чтобы я вернул List<String> здесь, вы можете это исправить, пожалуйста?
2. @umarbeyoglu ответ был обновлен.
Ответ №2:
Другие способы:
import 'package:enumerable/enumerable.dart';
void main() {
final result1 = searchlist.isNotEmpty
? searchlist.distinct().length == searchlist.length
: false;
print(result1);
// OR
final result2 = searchlist.isNotEmpty
? searchlist.toSet().length == searchlist.length
: false;
print(result2);
}
List<String> searchlist = ['object1', 'object2', 'object3', 'object2'];