Flutter Multiselect Plus

A highly customizable, searchable multiselect dropdown for Flutter. Effortlessly handle multiple or single selections with support for generic types, "Select All" logic, and professional overlay UI.

📸 Previews

Multi-Select Mode Single-Select Mode
Multi Single
Search Functionality Max Selection Limit
Search Limit

🚀 Key Features

  • Modern Overlay UI: No more boring dialogs. The menu floats over your UI and stays anchored to the field.
  • Multi & Single Select: Support for both modes with automatic UI switching (Checkbox vs Radio).
  • Generic Type Support: Use with Strings, Integers, or custom Data Models.
  • Searchable with Debounce: Built-in search bar with a 300ms delay for high-performance filtering.
  • Smart Positioning: Automatically detects screen boundaries and opens upwards if there's no space below.
  • Icon Support: Add leading icons to your selection items for a better UX.
  • Fully Customizable: Deeply customize colors, text styles, chip decorations, and the "Done" action button.
  • Dark Mode Ready: Automatically integrates with your app's ThemeData.

📦 Installation

Add this to your pubspec.yaml:

dependencies:
  flutter_multiselect_plus: ^1.1.3

🛠 Usage

Multi-Select Example

@override
Widget build(BuildContext context) {
  return Scaffold(
      body: MultiSelectDropdown<String>(
  items: [
    MultiSelectOption(value: 'dart', label: 'Dart', icon: Icons.code),
    MultiSelectOption(value: 'flutter', label: 'Flutter', icon: Icons.flutter_dash),
  ],
  onSelectionChanged: (List<String> selectedValues) {
    print(selectedValues);
  },
      ));
}      

Single-Select Example

@override
Widget build(BuildContext context) {
  return Scaffold(
      body:
      MultiSelectDropdown<int>(
        isSingleSelect: true,
        items: [
          MultiSelectOption(value: 1, label: 'High Priority'),
          MultiSelectOption(value: 2, label: 'Low Priority'),
        ],
        onSelectionChanged: (List<int> selectedValues) {
          print(selectedValues);
        },
      ));
}

🎨 Customization parameters

Parameter Description
isSingleSelect Toggle between Multi and Single selection modes.
dropdownHeight Set the maximum height for the dropdown menu.
selectedItemColor The color used for checkboxes, radio buttons, and active icons.
onMaxSelectionLimitReached Callback triggered when the user tries to select more than maxSelection.
doneTextStyle Custom styling for the "Done" action button.
showSearch Show or hide the search bar.
sortByLabel Alphabetically sort items by their label.

📝 License

This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.