我有下面的模型,其中包括主题名称和其他值。
class SubjectModel{
String chapter;
String lesson;
// more values
}
我以列表List<SubjectModel> subjects
的形式获取数据。为了接收依赖于chapter
和lesson
的结果,我需要过滤(搜索)列表。我为此编写了一个函数。
List<SubjectModel> subjects; // where i receive data
searchSubjects(){
List<SubjectModel> result; // for adding result
if(searchcontroller.text.isEmpty){ // this is a texteditingcontroller
result = subjects;
} else{
// I need to get results based on both chapter and lesson
results = ?
}
}
有时章节和课程可能同名,例如:-章节Addtion
,课程addition
2条答案
按热度按时间0aydgbwb1#
您可以使用
List
的where
方法:(
term
是搜索词,在您的情况下将其替换为searchcontroller.text
)这是区分大小写的,用于完全匹配。如果需要区分大小写:
如果需要部分匹配(区分大小写):
如果需要部分匹配(不区分大小写):
也可以搜索以**开始的搜索项。只需将
contains
替换为startsWith
。hvvq6cgz2#
要基于chapter和lesson属性搜索SubjectModel对象列表,可以使用Iterable类的where方法。where方法返回一个新的可迭代对象,该对象仅包含满足指定条件的原始可迭代对象的元素。
以下是修改searchSubjects方法以执行搜索的方法:
在本例中,searchTerm是在searchcontroller中输入的文本。where方法过滤主题列表,使其仅包含chapter或lessons属性包含搜索词(忽略大小写)的对象。对生成的可迭代对象调用toList方法,将其转换回列表。
请注意,搜索不区分大小写,这意味着无论搜索项是大写还是小写,搜索都将匹配。如果要执行区分大小写的搜索,请在where方法中删除对**toLowerCase()**的调用。