From 432e3b126054f318702522ce3737320478535fdb Mon Sep 17 00:00:00 2001 From: lxh2875931338 Date: Sun, 1 Nov 2026 11:55:38 +0800 Subject: [PATCH] =?UTF-8?q?fix(webdav):=20=E9=87=8D=E6=96=B0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=88=90=E5=8A=9F=E5=90=8E=E5=9B=9E=E5=88=B0=E4=B8=BB?= =?UTF-8?q?=E9=A1=B5=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF=E5=81=9C=E5=9C=A8?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因:_connect() 成功后用 pushReplacement(WebDAVFileListPage), 把 Setup 页替换成文件列表,所以看起来"登录完不返回"。 - 改为 Navigator.popUntil(isFirst):无论首次配置还是重新登录,都回主页 - 首页"重新登录"入口改为 await push,返回后重新加载 WebDAV 状态并刷新 - 清理两个未使用的 import --- lib/pages/home_page.dart | 9 ++++++--- lib/pages/webdav_setup_page.dart | 13 ++++--------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index c6a00c4..433fdcf 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -5,7 +5,6 @@ import '../services/webdav_service.dart'; import '../widgets/magnetic_scroll_physics.dart'; import 'webdav_setup_page.dart'; import 'settings_page.dart'; -import 'playlists_page.dart'; import '../database/song_database.dart'; import '../models/playlist_summary.dart'; import '../repositories/playlist_repository.dart'; @@ -656,13 +655,17 @@ class _HomePageState extends BaseState { _isLoading = false; }); if (mounted) { - // ⭐ 修复:用 push 保留 HomePage 在栈底 - Navigator.push( + // 用 push 保留 HomePage 在栈底;登录成功后 Setup 会 popUntil 回到这里 + await Navigator.push( context, MaterialPageRoute( builder: (_) => const WebDAVSetupPage(), ), ); + if (mounted) { + await _initWebDAV(); + safeSetState(() {}); + } } }, child: const Text( diff --git a/lib/pages/webdav_setup_page.dart b/lib/pages/webdav_setup_page.dart index 8c1d29d..d57017a 100644 --- a/lib/pages/webdav_setup_page.dart +++ b/lib/pages/webdav_setup_page.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import '../services/webdav_service.dart'; -import 'webdav_file_list_page.dart'; import '../base/base_state.dart'; class WebDAVSetupPage extends StatefulWidget { @@ -72,14 +71,10 @@ class _WebDAVSetupPageState extends BaseState { backgroundColor: Color(0xFF4CAF50), ), ); - // ⭐ 用 pushReplacement 替换当前页面(WebDAVSetupPage) - // 此时栈底是 HomePage,替换后栈变为 [HomePage, WebDAVFileListPage] - Navigator.pushReplacement( - context, - MaterialPageRoute( - builder: (_) => const WebDAVFileListPage(), - ), - ); + // 登录成功后直接回到主页: + // - 首次配置:用户配完先进主页,再自己点 WebDAV 进入文件列表 + // - 重新登录:从主页 push 进来,直接回主页,不会停在文件列表 + Navigator.of(context).popUntil((route) => route.isFirst); } } catch (e) { safeSetState(() {