我有搜索字段过滤我的列表,它的工作很好,但我想过滤列表的多个元素
我的列表:
List<Product> _p = [
Product(
title : 'P1',
info : 'just Football',
seller : 'me',
),
Product(
title : 'P2',
info : 'just Football',
seller : 'other',
),
]
过滤法
List<Product> filterByText(text){
return _p.where((element) =>
element.title.contains(text) ||
element.info.contains(text) ||
element.seller.contains(text)
).toList();
}
当我在TextFormField
中输入Football other
时,我想得到这个项目:
Product(
title : 'P2',
info : 'just Football',
seller : 'other',
),
相反,它返回一个空列表。当我只输入other
时,它工作正常。我如何通过一个字符串过滤多个元素?
2条答案
按热度按时间zzlelutf1#
有很多方法可以做到这一点。我只介绍一种方法:
可以像这样实现
Product
的toString()
方法:现在,为
filterByText
实现一个模糊搜索,为此,可以使用https://pub.dev/packages/fuzzywuzzy这样的现有包。你不一定要实现
toString()
,你也可以直接在extractTop
的getter字段中写入'${x.title} ${x.info} ${x.seller}'
。5q4ezhmt2#
您可以将最初的搜索查询分解为单词,然后搜索所有的单词。最后合并结果。
请确保为类
Product
重写==
。这可能会进一步帮助您:multiple word search in flutter