diff --git a/client/lib/state/nodes_provider.dart b/client/lib/state/nodes_provider.dart index 6292b3a..41b9665 100644 --- a/client/lib/state/nodes_provider.dart +++ b/client/lib/state/nodes_provider.dart @@ -30,9 +30,12 @@ class NodesNotifier extends AsyncNotifier> { @override Future> build() async { + _disposed = false; // build 重跑表示 notifier 仍在用:必须复位,否则上一轮 onDispose 置的 + // true 会让 setLivePing/_measure 永久静默(urltest 回写/延迟实测失效 → 延迟冻成 —)。 ref.onDispose(() => _disposed = true); - final auth = ref.watch(authProvider); - if (!auth.isLoggedIn) return const []; + // 只关心「是否登录」:token 续期(accessToken 变)不应重建 nodesProvider、清空已测延迟。 + final loggedIn = ref.watch(authProvider.select((s) => s.isLoggedIn)); + if (!loggedIn) return const []; try { final list = await _fetchWithRefresh(); _lastFetch = DateTime.now();