DropX
A fully customizable dropdown package for Flutter with keyboard navigation support.
Features
- Full keyboard navigation
- Built-in search and filtering
- Smart positioning
- Custom styling
- Loading states
Installation
dependencies:
dropx: ^0.0.1
Usage
import 'package:dropx/dropx.dart';
Dropx<String>(
items: ['Apple', 'Banana', 'Cherry'],
focusNode: FocusNode(),
hint: 'Select a fruit',
onSelected: (value) => print(value),
)
Custom styling
Dropx<String>(
items: items,
focusNode: focusNode,
hint: 'Select',
onSelected: (value) => print(value),
config: DropxConfig(
maxHeight: 400,
borderRadius: BorderRadius.circular(16),
showItemDividers: true,
style: DropxStyle(
overlayBackgroundColor: Colors.blue.shade50,
selectedItemBackgroundColor: Colors.blue.shade200,
),
),
)
Custom items
Dropx<User>(
items: users,
focusNode: focusNode,
hint: 'Select user',
displayText: (user) => user.name,
itemBuilder: (user, isSelected) {
return ListTile(
leading: CircleAvatar(child: Text(user.initials)),
title: Text(user.name),
subtitle: Text(user.email),
);
},
onSelected: (user) => print(user.name),
)
Custom filter
Dropx<Product>(
items: products,
focusNode: focusNode,
displayText: (product) => product.name,
customFilter: (product, query) {
return product.name.contains(query) || product.sku.contains(query);
},
onSelected: (product) => print(product.name),
)
More
See ARCHITECTURE.md for package details and example/ for more examples.
License
MIT License - see LICENSE file.