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