showDialogGeneral<T> static method
Future<T?>
showDialogGeneral<T>({
- double margin = 40,
- double radius = 14,
- Color? color,
- Widget? content,
- bool barrierDismissible = true,
- bool isUseTimer = false,
- EdgeInsetsGeometry? padding,
- ScrollPhysics? physics,
- bool isShowCloseButton = false,
- String? dialogName,
Implementation
static Future<T?> showDialogGeneral<T>({
double margin = 40,
double radius = 14,
Color? color,
Widget? content,
bool barrierDismissible = true,
bool isUseTimer = false,
EdgeInsetsGeometry? padding,
ScrollPhysics? physics,
bool isShowCloseButton = false,
String? dialogName,
}) async {
Completer<T?> completer = Completer<T?>();
Get.dialog<T>(
WillPopScope(
onWillPop: () => Future.value(barrierDismissible),
child: Center(
child: SingleChildScrollView(
physics: physics,
child: Material(
color: Colors.transparent,
child: Container(
margin: EdgeInsets.all(margin),
padding: isShowCloseButton ? EdgeInsets.zero : (padding ??= EdgeInsets.all(16.w)),
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(radius),
),
child: content ?? const SizedBox(),
),
),
),
),
),
barrierDismissible: barrierDismissible,
name: dialogName,
);
//* Timer untuk menutup dialog setelah 5 detik
if (barrierDismissible && isUseTimer) {
Future.delayed(const Duration(seconds: 5), () {
if (Get.isDialogOpen!) {
Get.back();
if (!completer.isCompleted) {
completer.complete();
}
}
});
}
return completer.future;
}