import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:sk_base_mobile/util/screen_adaper_util.dart'; import 'package:sk_base_mobile/widgets/core/sk_bottomsheet_picker.dart'; class ModalUtil { static Future showWarningDialog( String title, String msg, String button, VoidCallback onConfirm) async { bool confirmed = false; await showDialog( context: Get.overlayContext!, builder: (context) { return AlertDialog( title: Text(title), content: Text(msg), actions: [ TextButton( child: const Text( 'Cancel', style: TextStyle(color: Colors.black), ), onPressed: () { Navigator.of(context).pop(); confirmed = false; }, ), TextButton( child: Text( button, style: const TextStyle(color: Colors.orange), ), onPressed: () { onConfirm(); Navigator.pop(context); confirmed = true; }, ), ], ); }, ); return confirmed; } /// 底部选择器,支持3级 static Future showBottomSheetPicker( {title = '请选择', required onChanged, required firstLevel, secondLevel, thirdLevel, itemHeight, popupHeight}) async => showCupertinoModalPopup( context: Get.overlayContext!, builder: (BuildContext context) { return SkBottomSheetPicker( title: title, onChanged: onChanged, firstLevel: firstLevel, secondLevel: secondLevel, thirdLevel: thirdLevel, itemHeight: itemHeight ?? 80.0, popupHeight: popupHeight ?? 400); }, ); static Future showGeneralDialog( {required Widget content, double? width, double? height, Offset? offset}) { return Get.generalDialog( barrierLabel: "productPicker", barrierDismissible: true, transitionDuration: const Duration(milliseconds: 400), pageBuilder: (_, __, ___) { return Center( child: ClipRRect( borderRadius: BorderRadius.circular(ScreenAdaper.sp(30)), child: Material( child: SizedBox( height: height ?? Get.height - ScreenAdaper.height(150), width: width ?? Get.width - ScreenAdaper.width(150), child: content, )))); }, transitionBuilder: (_, anim, __, child) { Tween tween; tween = Tween(begin: offset ?? const Offset(0, 1), end: Offset.zero); return SlideTransition( position: tween.animate( CurvedAnimation(parent: anim, curve: Curves.easeInOut), ), child: child, ); }, ); } }