showPicker<K, V> function

Future<KeyedOption<K, V>?> showPicker<K, V>(
  1. BuildContext context, {
  2. dynamic title,
  3. dynamic content,
  4. required Set<KeyedOption<K, V>> options,
  5. dynamic extraOptions,
})

Implementation

Future<KeyedOption<K, V>?> showPicker<K, V>(
  BuildContext context, {
  title,
  content,
  required Set<KeyedOption<K, V>> options,
  extraOptions,
}) async {
  final intl = SunnyIntl.of(context);
  options = options.toSet();
  return await showPlatformBottomSheet<KeyedOption<K, V>>(
    context: context,
    extraOptions: extraOptions,
    builder: (context) => PlatformBottomSheet(
      title: textOrNull(title),
      content: textOrNull(content),
      actions: [
        ...options.map(
          (KeyedOption<K, V> option) {
            return PlatformBottomSheetAction(
              child: textOrNull(option.label)!,
              subtitle: textOrNull(
                option.subtitle?.first,
                maxLines: 2,
                wrap: true,
              ),
              leading: (option.icon is IconData)
                  ? iconOrNull(option.icon as IconData?)
                  : (option.icon as Widget?),
              onPressed: () => Navigator.pop(context, option),
            );
          },
        ),
      ],
      cancelButton: PlatformBottomSheetAction(
        isDefaultAction: true,
        child: Text(intl!.cancelLabel),
        ios: (_, target) =>
            CupertinoBottomSheetActionData(isDefaultAction: true),
        onPressed: () => Navigator.pop(context),
      ),
    ),
  );
}