updateLoading method
Implementation
void updateLoading(BuildContext context, String loadingContent, {bool? backDismissible}) {
_loadingCount++;
// 已经有loading在显示,只累加计数,不重复弹
if (_loadingCount > 1) return;
final navigator = VAppNavigator.instance.navigatorKey.currentState;
if (navigator == null) {
_loadingCount = 0; // 没拿到navigator,复位避免卡计数
return;
}
final config = Http().httpDioConfig.loadingConfig!;
// 方法参数优先(如下载场景单独开口),否则用全局配置,默认锁住
final bool canPopValue = backDismissible ?? config.backDismissible;
_loadingRoute = PageRouteBuilder(
opaque: false, // 透明,透出下面页面
barrierColor: config.backgroundColor, // 整屏遮罩色
barrierDismissible: false, // 点遮罩不关
transitionDuration: Duration.zero, // 无进出动画,即时显示
reverseTransitionDuration: Duration.zero,
pageBuilder: (_, __, ___) => PopScope(
canPop: canPopValue, // 返回键开关,默认false=锁住
child: LoadingDialog(
showContent: loadingContent.isNotEmpty,
backgroundColor: config.loadingViewBackgroundColor,
content: loadingContent,
loadingColor: config.loadingIconColor,
loadingView: config.loadingView!,
),
),
);
navigator.push(_loadingRoute!);
}