This commit is contained in:
sion
2026-03-25 00:47:37 +08:00
parent 2f612fd899
commit c02eca2999
6 changed files with 74 additions and 75 deletions

View File

@@ -62,13 +62,11 @@ class MyApp extends StatelessWidget {
providers: _buildProviders(),
child: Consumer<ThemeProvider>(
builder: (context, themeProvider, _) {
return AuthNavigator(
child: ShadApp.custom(
themeMode: themeProvider.themeMode,
theme: createLightShadTheme(),
darkTheme: createDarkShadTheme(),
appBuilder: _buildMaterialApp,
),
return ShadApp.custom(
themeMode: themeProvider.themeMode,
theme: createLightShadTheme(),
darkTheme: createDarkShadTheme(),
appBuilder: _buildMaterialApp,
);
},
),
@@ -134,55 +132,3 @@ class MyApp extends StatelessWidget {
);
}
}
/// 认证路由守卫 - 监听认证状态并自动导航
class AuthNavigator extends StatefulWidget {
final Widget child;
const AuthNavigator({super.key, required this.child});
@override
State<AuthNavigator> createState() => _AuthNavigatorState();
}
class _AuthNavigatorState extends State<AuthNavigator> {
bool? _wasLoggedIn;
@override
void didChangeDependencies() {
super.didChangeDependencies();
final isLoggedIn = context.watch<AuthProvider>().isLoggedIn;
if (_wasLoggedIn == null) {
_wasLoggedIn = isLoggedIn;
return;
}
if (_wasLoggedIn != isLoggedIn) {
_wasLoggedIn = isLoggedIn;
_navigateToAuthPage(isLoggedIn);
}
}
void _navigateToAuthPage(bool isLoggedIn) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (!mounted) return;
// 退出登录时重置其他 Provider 的状态
if (!isLoggedIn) {
context.read<AssetProvider>().resetLoadState();
context.read<MarketProvider>().resetLoadState();
}
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (_) => isLoggedIn ? const MainPage() : const LoginPage(),
),
(route) => false,
);
});
}
@override
Widget build(BuildContext context) => widget.child;
}