Browse Source

fix(splash): 优化网络检查逻辑,简化条件判断

重构网络检查流程,将原来的双重否定条件改为正向判断,提高代码可读性
同时合并网络检查和外部连通性检查的条件分支,使逻辑更清晰
newdev_shunjiawei
lxm 12 months ago
parent
commit
9aebe4c45d
  1. 30
      lib/modules/splash/controllers/splash_controller.dart

30
lib/modules/splash/controllers/splash_controller.dart

@ -108,30 +108,30 @@ class SplashController extends GetxController {
// 无限循环直到网络检查成功
try {
final connectivityResult = await Connectivity().checkConnectivity();
final hasConnectivity =
!connectivityResult.contains(ConnectivityResult.none);
// 检查是否有网络连接
if (connectivityResult.contains(ConnectivityResult.none)) {
// 显示弹窗并等待用户操作
await _showNoNetworkDialogAndWait();
continue; // 重新检查
// 条件变更:满足“有网络连接”或“能访问至少一个测试地址”之一即通过
if (hasConnectivity) {
Logger.d(_tag, '网络检查通过:检测到设备网络连接');
break;
}
// 进一步检查网络连通性
// 若设备层面无网络标识,再尝试外网连通性
final hasInternet = await _checkInternetConnection();
if (!hasInternet) {
// 显示弹窗并等待用户操作
await _showNoNetworkDialogAndWait();
continue; // 重新检查
if (hasInternet) {
Logger.d(_tag, '网络检查通过:可访问外网测试地址');
break;
}
// 网络检查成功,跳出循环
Logger.d(_tag, '网络检查成功,继续APP初始化流程');
break;
// 两个条件都不满足,提示并重试
await _showNoNetworkDialogAndWait();
continue;
} catch (e) {
Logger.e(_tag, '网络检查失败: $e');
// 显示弹窗并等待用户操作
Logger.e(_tag, '网络检查异常: $e');
await _showNoNetworkDialogAndWait();
continue; // 重新检查
continue;
}
}
}

Loading…
Cancel
Save