MultiSelectField<T>.chip constructor

const MultiSelectField<T>.chip({
  1. Key? key,
  2. required String label,
  3. List<Choice<T>> data()?,
  4. void onSelect(
    1. List<Choice<T>> choiceList,
    2. bool isFromDefaultData
    )?,
  5. List<Choice<T>>? defaultData,
  6. Widget? menuContent,
  7. Widget? menuHeader,
  8. Widget? menuFooter,
  9. ChipStyle? chipStyle,
  10. ChipMenuStyle? menuStyle,
  11. ChipSize? chipSize,
  12. VoidCallback? onMenuOpened,
  13. VoidCallback? onMenuClosed,
  14. bool enabled,
  15. Widget? leading,
  16. Widget? trailing,
  17. bool showDropdownIcon,
  18. bool singleSelection,
  19. bool selectAllOption,
  20. MenuController? controller,
  21. TextStyle? titleMenuStyle,
  22. TextStyle? itemMenuStyle,
  23. EdgeInsetsGeometry? titleMenuPadding,
})

Creates a compact chip-style MultiSelectField.

This variant displays as a small chip that opens a dropdown menu when tapped. Ideal for filter bars or space-constrained areas.

The dropdown can contain either:

  • Auto-generated list from data (like standard MultiSelectField)
  • Custom menuContent widget for full flexibility

Example with data:

MultiSelectField<Status>.chip(
  label: 'Status',
  data: () => [
    Choice('1', 'Active'),
    Choice('2', 'Pending'),
  ],
  onSelect: (selected, _) => updateFilter(selected),
)

Example with custom content:

MultiSelectField<String>.chip(
  label: 'Date',
  menuContent: Column(
    children: [
      RadioListTile(...),
      DatePicker(...),
    ],
  ),
  onSelect: (selected, _) => updateFilter(selected),
)

Implementation

const factory MultiSelectField.chip({
  Key? key,
  required String label,
  List<Choice<T>> Function()? data,
  void Function(List<Choice<T>> choiceList, bool isFromDefaultData)? onSelect,
  List<Choice<T>>? defaultData,
  Widget? menuContent,
  Widget? menuHeader,
  Widget? menuFooter,
  ChipStyle? chipStyle,
  ChipMenuStyle? menuStyle,
  ChipSize? chipSize,
  VoidCallback? onMenuOpened,
  VoidCallback? onMenuClosed,
  bool enabled,
  Widget? leading,
  Widget? trailing,
  bool showDropdownIcon,
  bool singleSelection,
  bool selectAllOption,
  MenuController? controller,
  TextStyle? titleMenuStyle,
  TextStyle? itemMenuStyle,
  EdgeInsetsGeometry? titleMenuPadding,
}) = ChipMultiSelectField<T>;