fix(webdav): 重新登录成功后回到主页,而不是停在文件列表
原因:_connect() 成功后用 pushReplacement(WebDAVFileListPage), 把 Setup 页替换成文件列表,所以看起来"登录完不返回"。 - 改为 Navigator.popUntil(isFirst):无论首次配置还是重新登录,都回主页 - 首页"重新登录"入口改为 await push,返回后重新加载 WebDAV 状态并刷新 - 清理两个未使用的 import
This commit is contained in:
@@ -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<HomePage> {
|
||||
_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(
|
||||
|
||||
@@ -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<WebDAVSetupPage> {
|
||||
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(() {
|
||||
|
||||
Reference in New Issue
Block a user