搜索大写字母和小写字母的数据



我正在使用 sembast 包为颤振应用程序进行本地数据存储。当我搜索本地数据时,无论字母是大写还是小,我都希望获得结果。我当前的代码对大写和小写字母很敏感。

Future searchFoodByField(String fieldName, String searchItem) async {
var finder = Finder(filter: Filter.matches(fieldName, searchItem));
final recordSnapshots = await _foodStore.find(
await _db,
finder: finder,
);
return recordSnapshots.map((snapshot) {
final food = Food.fromMap(snapshot.value);
food.foodId = snapshot.key;
return food;
}).toList();
}

如何修改它以获得所需的结果?

我假设你想寻找确切的单词。对于非英语语言,您可能还需要删除重音。(变音符号包可以帮助这里(。

// Using a regular expression matching the exact word (no case)
var filter = Filter.matchesRegExp(
fieldName, RegExp('^$searchItem$', caseSensitive: false));

您还可以使用自定义筛选器来执行所需的任何筛选:

// Using a custom filter exact word (converting everything to lowercase)
searchItem = searchItem.toLowerCase();
filter = Filter.custom((snapshot) {
var value = snapshot[fieldName] as String;
return value?.toLowerCase() == searchItem;
});

最新更新