filterOnSave method
Methods for filtering data as it is stored.
Each element after being toMap and its corresponding value
are passed to rawData
, so rewrite rawData
and return it.
データが保存される際にデータをフィルタリングするためのメソッド。
rawData
にtoMapされたあとの各要素とそれに対応するvalue
が渡されるのでrawData
を書き換えて返してください。
Implementation
@override
@protected
@mustCallSuper
DynamicMap filterOnSave(DynamicMap rawData, T value) {
assert(
searchValueFieldKey.isNotEmpty,
"[searchValueFieldKey] is empty. Please specify a non-empty string.",
);
final searchText = buildSearchText(value);
if (searchText.isEmpty) {
return super.filterOnSave(rawData, value);
}
return super.filterOnSave(
Map.unmodifiable({
...rawData,
searchValueFieldKey: searchText
.replaceAll(" ", " ")
.split(" ")
.expand(
(e) => e
.toLowerCase()
.replaceAll(".", "")
.toHankakuNumericAndAlphabet()
.toZenkakuKatakana()
.toKatakana()
.splitByCharacterAndBigram(),
)
.distinct()
.toMap((e) => MapEntry(e, true)),
}),
value,
);
}