singleSelection<T extends DropdownItem> static method

Future<T?> singleSelection<T extends DropdownItem>({
  1. required BuildContext context,
  2. required List<T> items,
  3. T? initialSelected,
  4. bool canUnselect = false,
  5. String emptyMessage = 'No items available',
  6. String singleSelectTitle = 'Select',
  7. String doneLabel = 'Done',
})

Opens a single-select picker and returns the chosen item.

Returns initialSelected if the sheet is dismissed without tapping Done.

Implementation

static Future<T?> singleSelection<T extends DropdownItem>({
  required BuildContext context,
  required List<T> items,
  T? initialSelected,
  bool canUnselect = false,
  String emptyMessage = 'No items available',
  String singleSelectTitle = 'Select',
  String doneLabel = 'Done',
}) async {
  var donePressed = false;

  final result = await showModalBottomSheet<T?>(
    context: context,
    isScrollControlled: true,
    backgroundColor: Colors.transparent,
    builder: (_) => GenericPickerSheet<T>(
      items: items,
      initialSelected: initialSelected != null ? [initialSelected] : [],
      multiSelect: false,
      canUnselectRadio: canUnselect,
      emptyMessage: emptyMessage,
      singleSelectTitle: singleSelectTitle,
      doneLabel: doneLabel,
      onDonePressed: () => donePressed = true,
    ),
  );

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