import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:loading_animation_widget/loading_animation_widget.dart'; import 'package:sk_base_mobile/app_theme.dart'; import 'package:sk_base_mobile/util/screen_adaper_util.dart'; class LoadingUtil extends GetxService { static LoadingUtil get to => Get.find(); OverlayEntry? _loadingOverlay; Future init() async { return this; } Future show({String? status}) async { return showLoading(status: status); } Future dismiss() async { return hideLoading(); } showLoading({String? status}) async { hideLoading(); _loadingOverlay = OverlayEntry( builder: (BuildContext context) { return PopScope( onPopInvoked: (_) { hideLoading(); }, child: Stack( children: [ ModalBarrier(dismissible: false, color: AppTheme.barrierColor), Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ LoadingAnimationWidget.fourRotatingDots( color: AppTheme.primaryColor, size: ScreenAdaper.height(50), ), if (status != null) SizedBox(width: ScreenAdaper.width(20)), if (status != null) Text(status, style: TextStyle( decoration: TextDecoration.none, color: AppTheme.primaryColor, fontSize: ScreenAdaper.height(25))) ], ), ) ], )); }, ); if (Get.overlayContext != null) { Overlay.of(Get.overlayContext!).insert(_loadingOverlay!); } } hideLoading() { _loadingOverlay?.remove(); _loadingOverlay = null; } }