multiSelection<T extends DropdownItem> static method

Future<List<T>?> multiSelection<T extends DropdownItem>({
  1. required BuildContext context,
  2. required List<T> items,
  3. required List<T> initialSelected,
  4. String emptyMessage = 'No items available',
  5. String doneLabel = 'Done',
  6. String selectAllLabel = 'Select All',
  7. String unselectAllLabel = 'Unselect All',
})

Opens a multi-select picker and returns the chosen items.

Returns null if the sheet is dismissed without tapping Done.

Implementation

static Future<List<T>?> multiSelection<T extends DropdownItem>({
  required BuildContext context,
  required List<T> items,
  required List<T> initialSelected,
  String emptyMessage = 'No items available',
  String doneLabel = 'Done',
  String selectAllLabel = 'Select All',
  String unselectAllLabel = 'Unselect All',
}) async {
  var donePressed = false;

  final result = await showModalBottomSheet<List<T>?>(
    context: context,
    isScrollControlled: true,
    backgroundColor: Colors.transparent,
    builder: (_) => GenericPickerSheet<T>(
      items: items,
      initialSelected: initialSelected,
      multiSelect: true,
      emptyMessage: emptyMessage,
      doneLabel: doneLabel,
      selectAllLabel: selectAllLabel,
      unselectAllLabel: unselectAllLabel,
      onDonePressed: () => donePressed = true,
    ),
  );

  if (!donePressed) return null;
  return result;
}