深色模式、首页设置页面和功能优化

This commit is contained in:
Developer
2026-04-02 07:06:55 +08:00
parent f0a62ed68b
commit 954d173329
88 changed files with 12157 additions and 7578 deletions

View File

@@ -1,111 +1,56 @@
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 '../widgets/main_navigation.dart';
import '../views/profile/guide/beginner_page.dart';
import '../views/profile/guide/permission.dart';
import '../views/profile/guide/app-data.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
/// 功能: 应用路由配置
/// 介绍: 定义应用的路由规则和页面导航
/// 最新变化: 简化路由逻辑,移除黑屏检测机制
import '../views/active/tags/corr_page.dart';
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 const String mainNavigation = '/main';
static const String beginnerGuide = '/beginner-guide';
static const String permissionGuide = '/permission-guide';
static const String appDataGuide = '/app-data-guide';
static const String spGuide = '/sp-guide';
static const String corrPage = '/corrPage';
static Route<dynamic> generateRoute(RouteSettings settings) {
debugPrint('🎯 generateRoute 被调用: ${settings.name}');
switch (settings.name) {
case AppConstants.routeHome:
debugPrint('✅ 返回主页');
case mainNavigation:
return MaterialPageRoute(builder: (_) => const MainNavigation());
case beginnerGuide:
return MaterialPageRoute(builder: (_) => const BeginnerPage());
case permissionGuide:
return MaterialPageRoute(builder: (_) => const PermissionPage());
case appDataGuide:
return MaterialPageRoute(builder: (_) => const AppDataPage());
case spGuide:
return MaterialPageRoute(builder: (_) => const SpGuidePage());
case corrPage:
final args = settings.arguments as Map<String, String>;
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,
builder: (_) =>
CorrPage(label: args['label']!, searchType: args['searchType']!),
);
default:
debugPrint('⚠️ 未知路由: ${settings.name},直接返回主页');
return MaterialPageRoute(
builder: (_) => const MainNavigation(),
settings: settings,
);
return MaterialPageRoute(builder: (_) => const MainNavigation());
}
}
}
class SettingsPage extends StatelessWidget {
const SettingsPage({super.key});
static Future<String> getInitialRoute(SharedPreferences prefs) async {
final bool? firstLaunch = prefs.getBool('firstLaunch');
final bool? agreementAccepted = prefs.getBool('agreementAccepted');
final bool? showGuideOnStartup = prefs.getBool('showGuideOnStartup');
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('设置')),
body: const Center(child: Text('设置页面')),
);
if (firstLaunch == true || showGuideOnStartup == true) {
return beginnerGuide;
}
if (agreementAccepted == false) {
return permissionGuide;
}
return mainNavigation;
}
}