getValuesSearchBox method
Implementation
Widget getValuesSearchBox() {
AnythingSelectorOptions options = getOptions;
bool isSearchable(text, i, e) {
String itemName = itemDisplayName(i, e);
return widget.searchableOnChanged?.call(this, text, i, e) ?? itemName.contains(text);
}
void onTextChanged(String text) {
if (widget.values == null) {
return;
}
widget.searchValues?.clear();
List<dynamic> values = widget.values!;
if (text.isEmpty) {
widget.searchValues?.addAll(values);
} else {
for (int i = 0; i < values.length; i++) {
dynamic e = values[i];
if (isSearchable(text, i, e)) {
widget.searchValues?.add(e);
}
}
}
searchValuesKey.update();
}
void onEventSearchTextChanged(String text) {
if (widget.searchTextOnChanged != null) {
widget.searchTextOnChanged?.call(this, text);
} else {
onTextChanged(text);
}
}
Widget searchBoxBuilder() {
TextEditingController controller = TextEditingController();
return Container(
padding: options.searchBoxPadding,
child: CupertinoTextField(
controller: controller,
padding: options.searchPadding,
decoration: options.searchDecoration,
prefix: options.searchPrefixIcon,
placeholder: options.searchPlaceHolder,
suffixMode: OverlayVisibilityMode.editing,
suffix: CcTapWidget(
child: options.searchClearIcon,
onTap: (state) {
controller.clear();
onEventSearchTextChanged(controller.text);
},
),
onChanged: (text) {
onEventSearchTextChanged(text);
},
),
);
}
return widget.searchBoxBuilder?.call(this, onEventSearchTextChanged) ?? searchBoxBuilder();
}