Files
xianyan/lib/core/services/post_agreement_initializer.dart
Developer 0da8906f5d chore: 完成v6.5.58版本迭代更新
本次更新包含多项功能优化与bug修复:
1. 新增flutter_keyboard_visibility依赖替代MediaQuery轮询获取键盘状态
2. 添加远程功能标志API支持与FeatureFlag服务
3. 重构壁纸背景渲染组件,统一全局壁纸展示逻辑
4. 延迟初始化壁纸源健康检测至用户同意协议后
5. 修复预测返回/长按预览锁定问题并移除相关配置项
6. 优化日志输出控制,release模式仅保留错误日志
7. 新增进度模块多语言翻译与相关UI字段
8. 优化稍后读功能,取消时同步删除聊天消息
9. 更新权限说明文档,移除冗余的存储写入权限配置
10. 重构部分UI组件减少参数传递,优化性能
2026-05-30 05:30:49 +08:00

143 lines
4.2 KiB
Dart

// ============================================================
// 闲言APP — 协议同意后初始化器
// 创建时间: 2026-05-30
// 更新时间: 2026-05-30
// 作用: 将权限敏感的服务初始化延迟到用户同意协议后执行
// 上次更新: 新增WallpaperHealthService.checkAllSources(),网络请求延迟到协议同意后
// ============================================================
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';
import '../../features/template/services/wallpaper_health_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);
}
}
try {
if (WallpaperHealthService.shouldCheck()) {
await WallpaperHealthService.checkAllSources();
Log.i('壁纸源健康检测完成');
}
} catch (e, st) {
Log.e('壁纸源健康检测启动检查失败', e, st);
}
_initialized = true;
Log.i('PostAgreementInitializer: 所有权限敏感服务初始化完成 ✓');
}
static bool shouldInit() {
return KvStorage.isOnboardingCompleted && !_initialized;
}
}