feat: allow search by base displayname for languages
This commit is contained in:
parent
b886ad6be9
commit
009ee68441
3 changed files with 25 additions and 15 deletions
|
|
@ -25,13 +25,11 @@ class CourseLanguageFilter extends StatelessWidget {
|
|||
displayname: (v) => v.getDisplayName(context),
|
||||
enableSearch: true,
|
||||
defaultName: L10n.of(context).allLanguages,
|
||||
searchMatchFn: (item, searchValue) {
|
||||
final search = searchValue.toLowerCase();
|
||||
final displayName = item.value?.getDisplayName(context).toLowerCase();
|
||||
final langCode = item.value?.langCode.toLowerCase();
|
||||
return displayName?.startsWith(search) == true ||
|
||||
langCode?.startsWith(search) == true;
|
||||
},
|
||||
searchMatchFn: (item, searchValue) => LanguageModel.search(
|
||||
item.value,
|
||||
searchValue,
|
||||
context,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -312,6 +312,21 @@ class LanguageModel {
|
|||
return _textDirection ?? _defaultTextDirection;
|
||||
}
|
||||
|
||||
static bool search(
|
||||
LanguageModel? item,
|
||||
String searchValue,
|
||||
BuildContext context,
|
||||
) {
|
||||
if (item == null) return false;
|
||||
final search = searchValue.toLowerCase();
|
||||
final displayName = item.displayName.toLowerCase();
|
||||
final displayNameLocal = item.getDisplayName(context).toLowerCase();
|
||||
final langCode = item.langCode.toLowerCase();
|
||||
return displayName.startsWith(search) ||
|
||||
displayNameLocal.startsWith(search) ||
|
||||
langCode.startsWith(search);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
if (other is LanguageModel) {
|
||||
|
|
|
|||
|
|
@ -158,14 +158,11 @@ class PLanguageDropdownState extends State<PLanguageDropdown> {
|
|||
),
|
||||
),
|
||||
),
|
||||
searchMatchFn: (item, searchValue) {
|
||||
final displayName =
|
||||
item.value?.getDisplayName(context).toLowerCase();
|
||||
if (displayName == null) return false;
|
||||
|
||||
final search = searchValue.toLowerCase();
|
||||
return displayName.startsWith(search);
|
||||
},
|
||||
searchMatchFn: (item, searchValue) => LanguageModel.search(
|
||||
item.value,
|
||||
searchValue,
|
||||
context,
|
||||
),
|
||||
),
|
||||
onMenuStateChange: (isOpen) {
|
||||
if (!isOpen) _searchController.clear();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue