112 lines
3.6 KiB
Dart
112 lines
3.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import '../constants/app_constants.dart';
|
|
import '../config/app_config.dart';
|
|
import '../views/main_navigation.dart';
|
|
import '../views/profile/guide/sp-guide.dart';
|
|
import '../views/profile/profile_page.dart';
|
|
import '../views/profile/settings/widgets.dart';
|
|
import '../views/footprint/collect_notes.dart';
|
|
|
|
/// 时间: 2026-03-27
|
|
/// 功能: 应用路由配置
|
|
/// 介绍: 定义应用的路由规则和页面导航
|
|
/// 最新变化: 简化路由逻辑,移除黑屏检测机制
|
|
|
|
class AppRoutes {
|
|
static const String initial = AppConstants.routeHome;
|
|
|
|
static Future<String> getInitialRoute(SharedPreferences prefs) async {
|
|
try {
|
|
debugPrint('========================================');
|
|
debugPrint('=== AppRoutes.getInitialRoute ===');
|
|
|
|
// 获取首次启动状态
|
|
final bool firstLaunch = prefs.getBool(AppConfig.keyFirstLaunch) ?? true;
|
|
final bool agreementAccepted =
|
|
prefs.getBool(AppConfig.keyAgreementAccepted) ?? false;
|
|
|
|
debugPrint('firstLaunch: $firstLaunch');
|
|
debugPrint('agreementAccepted: $agreementAccepted');
|
|
|
|
// 简化逻辑,避免复杂条件判断
|
|
if (firstLaunch) {
|
|
debugPrint('✅ 首次启动,返回: /guide');
|
|
await prefs.setBool(AppConfig.keyFirstLaunch, false);
|
|
return '/guide';
|
|
}
|
|
|
|
if (!agreementAccepted) {
|
|
debugPrint('✅ 未同意协议,返回: /guide');
|
|
return '/guide';
|
|
}
|
|
|
|
debugPrint('✅ 正常启动,返回: ${AppConstants.routeHome}');
|
|
return AppConstants.routeHome;
|
|
} catch (e) {
|
|
debugPrint('❌ 异常: $e,返回主页');
|
|
return AppConstants.routeHome;
|
|
}
|
|
}
|
|
|
|
static Route<dynamic> generateRoute(RouteSettings settings) {
|
|
debugPrint('🎯 generateRoute 被调用: ${settings.name}');
|
|
switch (settings.name) {
|
|
case AppConstants.routeHome:
|
|
debugPrint('✅ 返回主页');
|
|
return MaterialPageRoute(
|
|
builder: (_) => const MainNavigation(),
|
|
settings: settings,
|
|
);
|
|
case '/guide':
|
|
debugPrint('✅ 返回引导页');
|
|
return MaterialPageRoute(
|
|
builder: (_) => const SpGuidePage(),
|
|
settings: settings,
|
|
);
|
|
case AppConstants.routeSettings:
|
|
debugPrint('✅ 返回设置页');
|
|
return MaterialPageRoute(
|
|
builder: (_) => const SettingsPage(),
|
|
settings: settings,
|
|
);
|
|
case AppConstants.routeProfile:
|
|
debugPrint('✅ 返回个人页');
|
|
return MaterialPageRoute(
|
|
builder: (_) => const ProfilePage(),
|
|
settings: settings,
|
|
);
|
|
case AppConstants.routeWidgetsPage:
|
|
debugPrint('✅ 返回卡片设置页');
|
|
return MaterialPageRoute(
|
|
builder: (_) => const WidgetsPage(),
|
|
settings: settings,
|
|
);
|
|
case AppConstants.routeCollectNotes:
|
|
debugPrint('✅ 返回笔记页面');
|
|
return MaterialPageRoute(
|
|
builder: (_) => const CollectNotesPage(),
|
|
settings: settings,
|
|
);
|
|
default:
|
|
debugPrint('⚠️ 未知路由: ${settings.name},直接返回主页');
|
|
return MaterialPageRoute(
|
|
builder: (_) => const MainNavigation(),
|
|
settings: settings,
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
class SettingsPage extends StatelessWidget {
|
|
const SettingsPage({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('设置')),
|
|
body: const Center(child: Text('设置页面')),
|
|
);
|
|
}
|
|
}
|