From 6beed211b988f9be0f1e63953c14acd43c61dd25 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Mon, 29 Jun 2026 18:20:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(client):=20=E8=87=AA=E5=8A=A8=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E7=AB=9E=E6=80=81=20+=20=E7=89=88=E6=9C=AC=201.0.18+1?= =?UTF-8?q?9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _maybeAutoConnect 启动瞬间同步读 settingsProvider.autoConnect,但其 _load 异步(SharedPreferences) 还没完成 → 读到默认 false 而永久跳过自动连接。改到「节点就绪」回调里再判 autoConnect(节点走网络 拉取,远慢于本地设置读取,届时设置必已加载到位)。 Co-Authored-By: Claude Opus 4.8 --- client/lib/main.dart | 9 +++++---- client/pubspec.yaml | 2 +- client/windows/installer/pangolin.iss | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/client/lib/main.dart b/client/lib/main.dart index 4810a99..aa469e5 100644 --- a/client/lib/main.dart +++ b/client/lib/main.dart @@ -122,15 +122,16 @@ class _RootFlowState extends ConsumerState { void _maybeAutoConnect() { if (_autoConnectArmed) return; _autoConnectArmed = true; - if (!ref.read(settingsProvider).autoConnect) return; - if (ref.read(connectionProvider).phase != VpnPhase.off) return; - // 节点列表异步加载,等出现可用(uuid 非空)节点再连,避免「节点未就绪」直接失败。 + // 注意:不在此处早读 settingsProvider.autoConnect —— 其 _load 是异步(SharedPreferences), + // 启动这一刻多半还没加载完,会读到默认 false 而永久跳过。改到「节点就绪」回调里再判: + // 节点要走网络拉取,远慢于本地设置读取,那时 autoConnect 必已加载到位。 late final ProviderSubscription sub; sub = ref.listenManual(nodesProvider, (prev, next) { final ready = (next.valueOrNull ?? const []).any((n) => n.uuid.isNotEmpty); if (!ready) return; sub.close(); - if (ref.read(connectionProvider).phase == VpnPhase.off) { + if (ref.read(settingsProvider).autoConnect && + ref.read(connectionProvider).phase == VpnPhase.off) { ref.read(connectionProvider.notifier).toggle(); } }, fireImmediately: true); diff --git a/client/pubspec.yaml b/client/pubspec.yaml index bbb7780..250aa17 100644 --- a/client/pubspec.yaml +++ b/client/pubspec.yaml @@ -1,7 +1,7 @@ name: pangolin_vpn description: 穿山甲 · Pangolin — 极简、稳定、跨平台网络加速客户端。 publish_to: "none" -version: 1.0.17+18 +version: 1.0.18+19 environment: sdk: ^3.5.0 diff --git a/client/windows/installer/pangolin.iss b/client/windows/installer/pangolin.iss index ecfa1d2..4a28626 100644 --- a/client/windows/installer/pangolin.iss +++ b/client/windows/installer/pangolin.iss @@ -3,7 +3,7 @@ ; 前置: 先在 client/ 跑 `flutter build windows`(Release),产物在 ; ..\..\build\windows\x64\runner\Release #define MyAppName "穿山甲 Pangolin" -#define MyAppVersion "1.0.17" +#define MyAppVersion "1.0.18" #define MyAppPublisher "Pangolin" #define MyAppExeName "pangolin_vpn.exe" #define BuildDir "..\..\build\windows\x64\runner\Release"