showAdaptiveAlert function

Future showAdaptiveAlert({
  1. required BuildContext context,
  2. Key? key,
  3. AdaptiveStyle style = AdaptiveStyle.adaptive,
  4. Widget? title,
  5. Widget? content,
  6. Text? leftText,
  7. Text? rightText,
  8. void onLeftTap()?,
  9. void onRightTap()?,
  10. RouteSettings? routeSettings,
  11. bool barrierDismissible = true,
  12. bool useRootNavigator = false,
  13. ScrollController? scrollController,
  14. Curve insetAnimationCurve = Curves.decelerate,
  15. Duration insetAnimationDuration = const Duration(milliseconds: 100),
  16. EdgeInsetsGeometry? titlePadding,
  17. EdgeInsetsGeometry actionsPadding = EdgeInsets.zero,
  18. EdgeInsetsGeometry contentPadding = const EdgeInsets.fromLTRB(24.0, 20.0, 24.0, 24.0),
})

Implementation

Future showAdaptiveAlert({
  required BuildContext context,
  Key? key,
  final AdaptiveStyle style = AdaptiveStyle.adaptive,

  ///弹窗里的设置
  final Widget? title,
  final Widget? content,
  final Text? leftText,
  final Text? rightText,
  void Function()? onLeftTap,
  void Function()? onRightTap,

  ///显示弹窗设置
  final RouteSettings? routeSettings,
  final bool barrierDismissible = true,
  final bool useRootNavigator = false,

  ///IOS端Dialog独有
  final ScrollController? scrollController,
  final Curve insetAnimationCurve = Curves.decelerate,
  final Duration insetAnimationDuration = const Duration(milliseconds: 100),

  ///Android端Dialog独有
  /// An [EdgeInsetsGeometry] with infinite offsets in each direction.
  ///
  /// Can be used as an infinite upper bound for [clamp].
  EdgeInsetsGeometry? titlePadding,
  EdgeInsetsGeometry actionsPadding = EdgeInsets.zero,
  EdgeInsetsGeometry contentPadding =
      const EdgeInsets.fromLTRB(24.0, 20.0, 24.0, 24.0),
}) async {
  void adaptivePop() {
    return Navigator.of(context).pop();
  }

  final theme = Theme.of(context);
  return style.isCupertinoStyle(theme)
      ? showCupertinoDialog(
          context: context,
          barrierDismissible: barrierDismissible,
          useRootNavigator: useRootNavigator,
          builder: (context) {
            return CupertinoAlertDialog(
              key: key,
              scrollController: scrollController,
              insetAnimationCurve: insetAnimationCurve,
              insetAnimationDuration: insetAnimationDuration,
              title: title ?? Text('Title'),
              content: content ?? Text('This is a message'),
              actions: [
                CupertinoDialogAction(
                  child: leftText ?? Text('Ok'),
                  onPressed: onLeftTap ??
                      () {
                        adaptivePop();
                      },
                ),
                CupertinoDialogAction(
                  child: rightText ?? Text('Cancel'),
                  onPressed: onRightTap ??
                      () {
                        adaptivePop();
                      },
                ),
              ],
            );
          },
        )
      : showDialog(
          context: context,
          barrierDismissible: barrierDismissible,
          useRootNavigator: useRootNavigator,
          builder: (context) {
            return AlertDialog(
              key: key,
              title: title ?? Text('Title'),
              content: content ?? Text('This is a message'),
              actions: [
                TextButton(
                  child: leftText ?? Text('Ok'),
                  onPressed: onLeftTap ??
                      () {
                        adaptivePop();
                      },
                ),
                TextButton(
                  child: rightText ?? Text('Cancel'),
                  onPressed: onLeftTap ??
                      () {
                        adaptivePop();
                      },
                ),
              ],
            );
          },
        );
}