show<T> static method

Future<T?>? show<T>({
  1. required BuildContext context,
  2. required List<T> list,
  3. List<T>? selectedListData,
  4. LabelDelegate<T>? tileLabel,
  5. required SearchPredict<T> onItemSearch,
  6. required OnApplyButtonClick<T> onApplyButtonClick,
  7. SuggestionBuilder<T>? suggestionBuilder,
  8. String? searchFieldHint,
  9. InputDecorationTheme? searchFieldDecorationTheme,
  10. TextStyle? searchFieldStyle,
  11. AppbarBottom? buildAppbarBottom,
  12. bool enableOnlySingleSelection = false,
  13. Widget? emptySearchChild,
  14. FilterListDelegateThemeData? theme,
  15. ButtonStyle? applyButtonStyle,
  16. String? applyButtonText = 'Apply',
})

Shows a full screen search page and returns the search result selected by the user when the page is closed. Open search view page that implement SearchDelegate

await FilterListDelegate.show<String>(
    context: context,
    list: ['Jon', 'Abraham', 'John', 'Peter', 'Paul', 'Mary', 'Jane'],
    onItemSearch: (user, query) {
      return user.toLowerCase().contains(query.toLowerCase());
    },
    tileLabel: (user) => user,
    emptySearchChild: Center(child: Text('No user found')),
    enableOnlySingleSelection: true,
    searchFieldHint: 'Search Here..',
    onApplyButtonClick: (list) {
       // do something with list
    },
  );

Implementation

static Future<T?>? show<T>({
  required BuildContext context,
  required List<T> list,
  List<T>? selectedListData,
  LabelDelegate<T>? tileLabel,
  required SearchPredict<T> onItemSearch,
  required OnApplyButtonClick<T> onApplyButtonClick,
  SuggestionBuilder<T>? suggestionBuilder,
  String? searchFieldHint,
  InputDecorationTheme? searchFieldDecorationTheme,
  TextStyle? searchFieldStyle,
  AppbarBottom? buildAppbarBottom,
  bool enableOnlySingleSelection = false,
  Widget? emptySearchChild,
  FilterListDelegateThemeData? theme,
  ButtonStyle? applyButtonStyle,
  String? applyButtonText = 'Apply',
}) async {
  final selectedItem = await showSearch(
    context: context,
    delegate: FilterListDelegate(
      listData: list,
      selectedListData: selectedListData,
      tileLabel: tileLabel,
      onItemSearch: onItemSearch,
      onApplyButtonClick: onApplyButtonClick,
      searchFieldHint: searchFieldHint,
      suggestionBuilder: suggestionBuilder,
      searchFieldDecorationTheme: searchFieldDecorationTheme,
      searchFieldStyle: searchFieldStyle,
      buildAppbarBottom: buildAppbarBottom,
      enableOnlySingleSelection: enableOnlySingleSelection,
      emptySearchChild: emptySearchChild,
      theme: theme,
      applyButtonStyle: applyButtonStyle,
      applyButtonText: applyButtonText!,
    ),
  );

  return Future.value(selectedItem);
}