Dart如何按Chapter和Lesson搜索SubjectModel列表(大小写不敏感)
解决方案
直接通过List.where()方法结合大小写不敏感的字符串匹配实现过滤,补全后的完整代码如下:
List<SubjectModel> subjects; // 数据源 TextEditingController searchController; // 搜索输入控制器 List<SubjectModel> searchSubjects() { List<SubjectModel> result; final searchText = searchController.text.trim().toLowerCase(); if (searchText.isEmpty) { result = subjects; } else { // 过滤匹配chapter或lesson(大小写不敏感)的条目 result = subjects.where((subject) { final chapterLower = subject.chapter?.toLowerCase() ?? ''; final lessonLower = subject.lesson?.toLowerCase() ?? ''; return chapterLower.contains(searchText) || lessonLower.contains(searchText); }).toList(); } return result; }
关键说明
- 大小写不敏感处理:将搜索文本、
chapter和lesson字段统一转换为小写后再匹配,彻底消除大小写差异带来的匹配问题 - 空值安全防护:通过
?.和?? ''处理字段可能为null的场景,避免运行时空指针异常 - 灵活匹配逻辑:当前实现是只要chapter或lesson包含搜索文本就保留,如果需要强制同时匹配两个字段,只需把代码中的
||替换为&&即可
内容的提问来源于stack exchange,提问作者Febin Johnson
相关产品推荐
相关产品推荐

