MultiSelectField<T>.drawer constructor

const MultiSelectField<T>.drawer({
  1. Key? key,
  2. required String label,
  3. List<Choice<T>> data()?,
  4. void onSelect(
    1. List<Choice<T>> choiceList,
    2. bool isFromDefaultData
    )?,
  5. void onChanged(
    1. List<Choice<T>> selectedItems
    )?,
  6. List<Choice<T>>? defaultData,
  7. Widget? menuContent,
  8. Widget? menuHeader,
  9. Widget? menuFooter,
  10. DrawerStyle? drawerStyle,
  11. String? keyDrawer,
  12. GlobalKey<ScaffoldState>? scaffoldKey,
  13. VoidCallback? onOpened,
  14. VoidCallback? onClosed,
  15. bool enabled,
  16. Widget? child,
  17. bool singleSelection,
  18. bool selectAllOption,
  19. bool useTextFilter,
  20. bool closeOnSelect,
  21. TextStyle? titleMenuStyle,
  22. TextStyle? itemMenuStyle,
  23. EdgeInsetsGeometry? titleMenuPadding,
})

Creates a MultiSelectField that opens a drawer for selection.

Supports two modes:

  • Scaffold drawer: Provide keyDrawer and scaffoldKey to use the Scaffold's native drawer. Place a MultiSelectDrawerContent widget inside your Scaffold's endDrawer with the same keyDrawer name.
  • Overlay drawer: Omit scaffoldKey to 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>;