showTextListPicker function

Future<String?> showTextListPicker({
  1. required BuildContext context,
  2. required Future<List<String>> findFn(
    1. String str
    ),
  3. ListTile listItemFn(
    1. String item,
    2. int position,
    3. bool focused,
    4. bool selected,
    5. dynamic onTap(),
    )?,
  4. bool filterFn(
    1. String item,
    2. String str
    )?,
  5. InputDecoration? searchDecoration,
  6. Widget? title,
  7. String? selectedItem,
})

Shows a simple text list picker with search capability

Parameters:

  • context BuildContext required
  • findFn Function to retun text list required
  • listItemFn Generator function to create ListTile
  • filterFn Filter function for search
  • searchDecoration Search text filed decoration
  • title Dialog title
  • selectedItem Initial Selected Item

Implementation

Future<String?> showTextListPicker({
  required BuildContext context,
  required Future<List<String>> Function(String str) findFn,
  ListTile Function(
    String item,
    int position,
    bool focused,
    bool selected,
    Function() onTap,
  )?
      listItemFn,
  bool Function(String item, String str)? filterFn,
  InputDecoration? searchDecoration,
  Widget? title,
  String? selectedItem,
}) {
  return showDialog<String>(
      context: context,
      builder: (context) => ListPickerDialog(
            findFn: findFn,
            filterFn: filterFn ??
                (dynamic item, str) =>
                    item.toLowerCase().indexOf(str.toLowerCase()) >= 0,
            listItemFn: (dynamic item, position, focused, selected, onTap) =>
                ListTile(
              title: Text(
                item,
                style:
                    TextStyle(color: selected ? Colors.blue : Colors.black87),
              ),
              tileColor:
                  focused ? Color.fromARGB(10, 0, 0, 0) : Colors.transparent,
              onTap: onTap,
            ),
            searchDecoration: searchDecoration,
            title: title,
            selectedItem: selectedItem,
          ));
}