MultiSelectField<T>.drawer constructor
const
MultiSelectField<T>.drawer ({
- Key? key,
- required String label,
- List<
Choice< data()?,T> > - void onSelect()?,
- void onChanged()?,
- List<
Choice< ? defaultData,T> > - DrawerStyle? drawerStyle,
- String? keyDrawer,
- GlobalKey<
ScaffoldState> ? scaffoldKey, - VoidCallback? onOpened,
- VoidCallback? onClosed,
- bool enabled,
- Widget? child,
- bool singleSelection,
- bool selectAllOption,
- bool useTextFilter,
- bool closeOnSelect,
- TextStyle? titleMenuStyle,
- TextStyle? itemMenuStyle,
- EdgeInsetsGeometry? titleMenuPadding,
Creates a MultiSelectField that opens a drawer for selection.
Supports two modes:
- Scaffold drawer: Provide
keyDrawerandscaffoldKeyto use the Scaffold's native drawer. Place aMultiSelectDrawerContentwidget inside your Scaffold'sendDrawerwith the samekeyDrawername. - Overlay drawer: Omit
scaffoldKeyto use a standalone overlay drawer that respects SafeArea and system notifications.
Example with Scaffold drawer:
// In your Scaffold:
Scaffold(
key: scaffoldKey,
endDrawer: Drawer(
child: MultiSelectDrawerContent<Car>(keyName: "carFilter"),
),
body: MultiSelectField<Car>.drawer(
label: 'Cars',
keyDrawer: "carFilter",
scaffoldKey: scaffoldKey,
data: () => carChoices,
onSelect: (selected, _) => print(selected),
),
)
Example with overlay:
MultiSelectField<Car>.drawer(
label: 'Cars',
data: () => carChoices,
onSelect: (selected, _) => print(selected),
)
Implementation
const factory MultiSelectField.drawer({
Key? key,
required String label,
List<Choice<T>> Function()? data,
void Function(List<Choice<T>> choiceList, bool isFromDefaultData)? onSelect,
void Function(List<Choice<T>> selectedItems)? onChanged,
List<Choice<T>>? defaultData,
Widget? menuContent,
Widget? menuHeader,
Widget? menuFooter,
DrawerStyle? drawerStyle,
String? keyDrawer,
GlobalKey<ScaffoldState>? scaffoldKey,
VoidCallback? onOpened,
VoidCallback? onClosed,
bool enabled,
Widget? child,
bool singleSelection,
bool selectAllOption,
bool useTextFilter,
bool closeOnSelect,
TextStyle? titleMenuStyle,
TextStyle? itemMenuStyle,
EdgeInsetsGeometry? titleMenuPadding,
}) = DrawerMultiSelectField<T>;