single<T> static method

Future<T?> single<T>(
  1. BuildContext context, {
  2. required List<ListPickerOption> options,
  3. void onSave(
    1. T? result
    )?,
  4. void onCancel()?,
  5. T? selected,
})

Implementation

static Future<T?> single<T>(
  BuildContext context, {
  required List<ListPickerOption> options,
  void Function(T? result)? onSave,
  void Function()? onCancel,
  T? selected,
}) async {
  List<T> _selected = [];

  if (selected != null) {
    _selected.add(selected);
  }

  T? result = await showDialog<T?>(
    context: context,
    barrierDismissible: true,
    builder: (context) {
      return ListPicker<T>(
        options: options,
        onSave: (list) {
          if (onSave == null) return;

          if (list.isNotEmpty) {
            onSave(list.first);
            return;
          }

          onSave(null);
        },
        onCancel: onCancel,
        selected: _selected,
        mode: ListPickerMode.single,
      );
    },
  );

  return result;
}