updateSearchQuery method

List<MultiSelectItem<T>> updateSearchQuery(
  1. String? val,
  2. List<MultiSelectItem<T>> allItems,
  3. bool enableSingleSelection,
  4. bool enableeTag,
)

Accepts the search query, and the original list of items. If the search query is valid, return a filtered list, otherwise return the original list.

Implementation

List<MultiSelectItem<T>> updateSearchQuery(
    String? val,
    List<MultiSelectItem<T>> allItems,
    bool enableSingleSelection,
    bool enableeTag) {
  List<MultiSelectItem<T>> listToShow;

  if (enableSingleSelection && enableeTag) {
    if (val != null && val.isNotEmpty) {
      val.toLowerCase();
      listToShow = allItems
          .where((e) =>
              e.label.toLowerCase().contains(val.toLowerCase()) &&
              e.label.toLowerCase().startsWith(val.toLowerCase()))
          .toList();

      if (listToShow.isEmpty) {
        listToShow.add(MultiSelectItem(allItems.length++, val));
      }


      return listToShow;
    } else {
      listToShow = allItems;
    }

    return listToShow;
  } else {
    if (val != null && val.trim().isNotEmpty) {
      List<MultiSelectItem<T>> filteredItems = [];
      for (var item in allItems) {
        if (item.label.toLowerCase().contains(val.toLowerCase())) {
          filteredItems.add(item);
          print(item.label);
        }
      }
      return filteredItems;
    } else {
      return allItems;
    }
  }
}