show<T> method

  1. @override
Future<T?> show<T>(
  1. BuildContext context, {
  2. required List<AdaptiveBottomSheetButtonBuilder> actionButtons,
  3. bool dismissible = true,
  4. bool useRootNavigator = false,
  5. Brightness? brightness,
  6. Widget? title,
  7. Widget? message,
})
override

Implementation

@override
Future<T?> show<T>(
  BuildContext context, {
  required List<AdaptiveBottomSheetButtonBuilder> actionButtons,
  bool dismissible = true,
  bool useRootNavigator = false,
  Brightness? brightness,
  Widget? title,
  Widget? message,
}) {
  return showCupertinoModalPopup<T>(
    context: context,
    useRootNavigator: useRootNavigator,
    barrierDismissible: dismissible,
    builder: (context) {
      final cancelButtonBuilder = actionButtons.firstWhereOrNull(
        (element) => element.isCancelAction,
      );

      Widget? cancelButton;
      if (cancelButtonBuilder != null) {
        cancelButton =
            AdaptiveBottomActionSheetButton(Theme.of(context).platform).build(
          context,
          label: cancelButtonBuilder.child,
          onPressed: cancelButtonBuilder.onPressed,
          isDefaultAction: cancelButtonBuilder.isDefaultAction,
          isDestructiveAction: cancelButtonBuilder.isDestructiveAction,
          isCancelAction: cancelButtonBuilder.isCancelAction,
        );
      }

      final items = actionButtons.where((element) => !element.isCancelAction);

      return CupertinoTheme(
        data: CupertinoThemeData(brightness: brightness),
        child: CupertinoActionSheet(
          title: title,
          message: message,
          actions: List.generate(
            items.length,
            (index) {
              final item = items.elementAt(index);
              return AdaptiveBottomActionSheetButton(
                      Theme.of(context).platform)
                  .build(
                context,
                label: item.child,
                onPressed: item.onPressed,
                isDefaultAction: item.isDefaultAction,
                isDestructiveAction: item.isDestructiveAction,
                isCancelAction: item.isCancelAction,
              );
            },
          ),
          cancelButton: cancelButton,
        ),
      );
    },
  );
}