showAlertDialog static method

void showAlertDialog({
  1. Widget? title,
  2. Widget? content,
  3. String contentText = "",
  4. String? cancelText,
  5. String? confirmText,
  6. Widget? cancel,
  7. Widget? confirm,
  8. VoidCallback? onCancel,
  9. VoidCallback? onConfirm,
  10. List<CupertinoDialogAction>? actions,
  11. bool showCancel = true,
  12. bool barrierDismissible = false,
})

Implementation

static void showAlertDialog({
  Widget? title,
  Widget? content,
  String contentText = "",
  String? cancelText,
  String? confirmText,
  Widget? cancel,
  Widget? confirm,
  VoidCallback? onCancel,
  VoidCallback? onConfirm,
  List<CupertinoDialogAction>? actions,
  bool showCancel = true,
  bool barrierDismissible = false,
}) {
  final context = Get.context!;

  Widget baseAlertDialog;
  // 判断当前平台
  bool isIOS = Theme.of(context).platform == TargetPlatform.iOS ||
      Theme.of(context).platform == TargetPlatform.macOS;

  if (!isIOS) {
    baseAlertDialog = AlertDialog(
      contentPadding: const EdgeInsets.all(0),
      title: Center(
        child: title ?? Text(ComLocalizations.of(context).warmTips),
      ),
      titleTextStyle: Theme.of(Get.context!).textTheme.titleMedium,
      // titlePadding: const EdgeInsets.fromLTRB(24, 24, 24, 0),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.all(
            Radius.circular(context.comTheme.shapes.resolvedDialogRadius)),
      ),
      content: Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisSize: MainAxisSize.min,
        children: [
          Padding(
            padding: const EdgeInsets.fromLTRB(24, 12, 24, 20),
            child: content ??
                Text(
                  contentText,
                  textAlign: TextAlign.center,
                ),
          ),
          Divider(
            thickness: 0.5,
            height: 0,
            color: Get.isDarkMode ? Colors.white : Colors.black12,
          ),
          SizedBox(
            height: 46,
            width: double.infinity,
            child: Row(
              children: [
                Visibility(
                  visible: showCancel,
                  child: Expanded(
                    child: Material(
                      color: Colors.transparent,
                      borderRadius: const BorderRadius.only(
                        bottomLeft: Radius.circular(16),
                      ),
                      clipBehavior: Clip.hardEdge,
                      child: InkWell(
                        child: Container(
                          height: double.infinity,
                          alignment: Alignment.center,
                          clipBehavior: Clip.hardEdge,
                          decoration: const BoxDecoration(
                            borderRadius: BorderRadius.only(
                                bottomLeft: Radius.circular(16)),
                          ),
                          child: cancel ??
                              Text(ComLocalizations.of(context).cancel),
                        ),
                        onTap: () =>
                            onCancel != null ? onCancel.call() : Get.back(),
                      ),
                    ),
                  ),
                ),
                Visibility(
                  visible: showCancel,
                  child: VerticalDivider(
                    thickness: 0.5,
                    width: 0,
                    color: Get.isDarkMode ? Colors.white : Colors.black12,
                  ),
                ),
                Expanded(
                  child: Material(
                    color: Colors.transparent,
                    borderRadius: const BorderRadius.only(
                      bottomRight: Radius.circular(16),
                    ),
                    clipBehavior: Clip.hardEdge,
                    child: InkWell(
                      child: Container(
                        height: double.infinity,
                        alignment: Alignment.center,
                        decoration: const BoxDecoration(
                          borderRadius: BorderRadius.only(
                              bottomRight: Radius.circular(16)),
                        ),
                        child: confirm ??
                            Text(ComLocalizations.of(context).confirm),
                      ),
                      onTap: () =>
                          onConfirm != null ? onConfirm.call() : Get.back(),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  } else {
    baseAlertDialog = CupertinoAlertDialog(
      title: title ??
          Center(
            child: Text(ComLocalizations.of(context).warmTips),
          ),
      content: Padding(
        padding: const EdgeInsets.only(top: 12),
        child: content,
      ),
      actions: actions ??
          <CupertinoDialogAction>[
            if (showCancel) ...[
              CupertinoDialogAction(
                onPressed: () =>
                    onCancel != null ? onCancel.call() : Get.back(),
                child: cancel ?? Text(ComLocalizations.of(context).cancel),
              ),
            ],
            CupertinoDialogAction(
              onPressed: () => onConfirm?.call(),
              child: confirm ?? Text(ComLocalizations.of(context).confirm),
            ),
          ],
    );
  }

  Get.dialog(
    baseAlertDialog,
    barrierDismissible: barrierDismissible,
  );
}