updateLoading method

void updateLoading(
  1. BuildContext context,
  2. String loadingContent, {
  3. bool? backDismissible,
})

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!);
}