Files
xianyan/lib/core/services/post_agreement_initializer.dart
Developer adfa0af825 chore: 汇总2026-05-30全量更新
### 详细变更:
1.  **文档与配置**:更新AGENTS.md添加命令超时约束,升级Rive依赖至0.14.7并替换平台插件引用
2.  **UI优化**:重构AppInfo页面布局、移除图表冗余配置、锁定部分系统设置项
3.  **功能增强**:
    - 新增工具面板拖拽状态管理与介绍弹窗
    - 新增进度页面编辑/重排/清空用户进度功能
    - 新增摇一摇路由作用域拦截逻辑
4.  **体验优化**:
    - 统一外部链接跳转弹窗,添加文件打开确认逻辑
    - 修复设备卡片IP溢出、Android权限声明问题
    - 后台任务初始化增加协议校验
5.  **代码重构**:拆分工具面板配置、拖拽逻辑与动画参数,优化状态管理代码
6.  **工具脚本**:新增协议文件上传脚本
2026-05-30 05:29:50 +08:00

133 lines
3.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ============================================================
// 闲言APP — 协议同意后初始化器
// 创建时间: 2026-05-30
// 更新时间: 2026-05-30
// 作用: 将权限敏感的服务初始化延迟到用户同意协议后执行
// 上次更新: 首次创建从main.dart拆分权限敏感初始化
// ============================================================
import '../storage/kv_storage.dart';
import '../utils/logger.dart';
import '../utils/platform/platform_utils.dart' as pu;
import '../router/app_router.dart' show rootNavigatorKey;
import 'network/connectivity_service.dart';
import 'clipboard_monitor_service.dart';
import 'background/background_task_service.dart';
import 'notification/local_notification_service.dart';
import 'device/screen_wake_service.dart';
import 'device/battery_optimization_service.dart';
import 'notification/readlater_reminder_service.dart';
import 'data/home_widget_service.dart';
import 'readlater/sharing_receiver_service.dart';
import '../../features/discover/services/chat_migration_service.dart';
class PostAgreementInitializer {
PostAgreementInitializer._();
static bool _initialized = false;
static bool get isInitialized => _initialized;
static Future<void> init() async {
if (_initialized) return;
Log.i('PostAgreementInitializer: 开始初始化权限敏感服务...');
if (!pu.isWeb) {
try {
SharingReceiverService().init();
SharingReceiverService().setNavigatorKey(rootNavigatorKey);
Log.i('分享接收服务初始化完成');
} catch (e, st) {
Log.e('分享接收服务初始化失败', e, st);
}
}
if (!pu.isWeb) {
try {
await LocalNotificationService.init();
Log.i('本地通知服务初始化完成');
} catch (e, st) {
Log.e('本地通知服务初始化失败', e, st);
}
}
if (!pu.isWeb) {
try {
await ScreenWakeService.init();
Log.i('屏幕常亮服务初始化完成');
} catch (e, st) {
Log.e('屏幕常亮服务初始化失败', e, st);
}
}
if (!pu.isWeb) {
try {
await BatteryOptimizationService.init();
Log.i('电池优化服务初始化完成');
} catch (e, st) {
Log.e('电池优化服务初始化失败', e, st);
}
}
if (!pu.isWeb) {
try {
await ReadlaterReminderService.startMonitoring();
Log.i('稍后读提醒服务初始化完成');
} catch (e, st) {
Log.e('稍后读提醒服务初始化失败', e, st);
}
}
try {
await ChatMigrationService.migrateIfNeeded();
Log.i('聊天数据迁移检查完成');
} catch (e, st) {
Log.e('聊天数据迁移检查失败', e, st);
}
if (!pu.isWeb) {
try {
await HomeWidgetService.instance.init();
Log.i('桌面小组件服务初始化完成');
} catch (e, st) {
Log.e('桌面小组件服务初始化失败', e, st);
}
}
if (!pu.isWeb) {
try {
await ClipboardMonitorService.instance.initFromStore();
Log.i('剪贴板监控服务初始化完成');
} catch (e, st) {
Log.e('剪贴板监控服务初始化失败', e, st);
}
}
if (!pu.isWeb) {
try {
await ConnectivityService.init();
Log.i('网络状态检测服务初始化完成');
} catch (e, st) {
Log.e('网络状态检测服务初始化失败', e, st);
}
}
if (!pu.isWeb) {
try {
await BackgroundTaskService.instance.init();
Log.i('后台任务服务初始化完成');
} catch (e, st) {
Log.e('后台任务服务初始化失败', e, st);
}
}
_initialized = true;
Log.i('PostAgreementInitializer: 所有权限敏感服务初始化完成 ✓');
}
static bool shouldInit() {
return KvStorage.isOnboardingCompleted && !_initialized;
}
}