advanced_dropdown 2.0.3
advanced_dropdown: ^2.0.3 copied to clipboard
A customizable Flutter dropdown with search, single-select, and multi-select support.
πΈ Screenshots #
Custom Decoration | Single Select | Single Select with Search | Multi Select | Multi Select with Search |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
π§© Custom Dropdown for Flutter #
A fully customizable dropdown widget for Flutter that supports single-select, multi-select, and search β all in one widget.
Lightweight, flexible, and easy to integrate into any Flutter project.
π± Platform Support #
Platform | Supported | Tested |
---|---|---|
Android | β | β |
iOS | β | β |
Web | β | β |
Windows | β | βοΈ |
macOS | β | βοΈ |
Linux | β | βοΈ |
π‘ Works with Flutter 3.0+ and Dart 3.0+
β¨ Features #
β
Single Select (default) β behaves like a normal dropdown
β
Multi Select β users can select multiple items
β
Searchable Dropdown β optional search bar for filtering
β
Flexible Decoration β customize dropdown and list appearance
β
Custom InputDecoration for search bar
β
Auto position below the button
β
Lightweight (~3 KB compressed)
β
No external dependencies
β
Custom Dropdown Button Design
β
Custom Dropdown Icon
βοΈ Customization Options #
Below is a complete list of customizable properties available in the AdvancedDropdown
widget.
Property | Type | Required | Default | Description |
---|---|---|---|---|
items | List<dynamic> <br/>List<Map<String, dynamic>> |
β Yes | β | The list of items to display in the dropdown. Supports both List<String> and List<Map<String, dynamic>> . |
onChanged | Function(dynamic) |
β Yes | β | Callback triggered when an item (or multiple items) is selected. Returns a value (single select) or a list (multi-select). |
isSearch | bool |
β No | false |
Enables a search bar for filtering dropdown items. |
isMultiSelect | bool |
β No | false |
Enables multiple selection mode with checkboxes and removable chips. |
displayField | String? |
β No | null |
For List<Map<String, dynamic>> , defines which key to use for display text (e.g., "name" ). |
valueField | String? |
β No | null |
For List<Map<String, dynamic>> , defines which key to use as the actual value (e.g., "id" ). |
initialValue | dynamic |
β No | null |
Defines a preselected value for single-select dropdowns β useful for restoring API data. |
initialValues | List<dynamic>? |
β No | null |
Defines preselected values for multi-select dropdowns β useful for restoring API data or saved user preferences. |
maxSelection | int? |
β No | null |
Sets a limit for maximum selected items in multi-select mode. When exceeded, shows a SnackBar (e.g., βYou can select up to 4 itemsβ). |
decoration | BoxDecoration? |
β No | null |
Customizes the main dropdown button appearance (border, background, shape, etc.). |
dropdownDecoration | BoxDecoration? |
β No | null |
Styles the dropdown popup container. |
inputDecoration | InputDecoration? |
β No | null |
Customizes the search fieldβs style and behavior. |
hintText | String? |
β No | "Select an option" |
Text shown when no item is selected. |
icon | Icon? |
β No | Icon(Icons.arrow_drop_down) |
The dropdown icon displayed beside the field. |
selectedTextStyle | TextStyle? |
β No | null |
Custom text style for displaying selected items. |
itemTextStyle | TextStyle? |
β No | null |
Custom text style for dropdown list items. |
chipColor | Color |
β No | Color(0xFFD0E6FF) |
Background color for selected item chips (multi-select mode). |
chipTextColor | Color |
β No | Colors.black |
Text color inside chips. |
chipTextStyle | TextStyle? |
β No | null |
Fully customize the chipβs text (font, size, weight, etc.). |
chipRemoveIconColor | Color |
β No | Colors.black54 |
Color of the chip remove (Γ) icon. |
key | Key? |
β No | null |
Flutter widget key for testing or identification. |
π‘ Notes #
- Default mode = Single Select
- When
isMultiSelect: true
, theonChanged
callback returns a List of selected items. - Dropdown automatically opens below the button.
- You can style everything (dropdown, button, list, search bar).
- Works seamlessly with light and dark themes.