filterOnSave method

  1. @override
  2. @protected
  3. @mustCallSuper
DynamicMap filterOnSave(
  1. DynamicMap rawData,
  2. T value
)
override

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.

データが保存される際にデータをフィルタリングするためのメソッド。

rawDatatoMapされたあとの各要素とそれに対応する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,
  );
}