- 入口:
lib/main.dart启动时先检测 CLI 参数(无则继续 UI),创建全局AppState(Provider)并渲染EchoTraceApp。 AppState负责初始化日志、配置、数据库连接(实时/备份)、错误与加载状态、解密进度、头像缓存等。UI 通过Consumer<AppState>订阅状态。HomePage搭配Sidebar实现主布局,根据AppState.currentPage切换各业务页面(欢迎、聊天、数据分析、群聊分析、导出、数据管理、设置)。
- 数据库读取由
DatabaseService承载,支持两种模式:- 备份模式:使用 sqflite 只读连接解密后的 SQLite(session/message/contact)。
- 实时模式:通过
wechat_wcdb_native.dart调用 Windows DLL 直接读取加密 WCDB。
- 解密:默认使用 Go FFI(
DecryptServiceGo->GoDecryptFFI),另有 Dart 备份实现;图片解密在ImageDecryptService。 - 配置:
ConfigService持久化解密密钥、数据库路径、实时/备份模式、图片密钥、调试开关等。
AnalyticsService与高级分析/缓存后台服务负责私聊/全局统计、时间分布、词频、年度/双人报告等。ChatExportService负责 JSON/HTML/Excel 导出,页面ChatExportPage与 CLI 共用。- 群聊相关能力在
GroupChatService及群聊页面系列(活跃度、成员、媒体统计等)。 - 日志:
LoggerService统一 info/debug/warning/error,CLI 也输出到临时文件。
lib/cli/cli_export_runner.dart拦截命令行参数(仅 Windows),初始化AppState与数据库后批量导出,会话筛选与时间范围与 UI 保持一致。
- 核心模型:
ChatSession、Message、Contact、AnalyticsData等,位于lib/models/。 - 工具:
path_utils.dart(路径/特殊字符兼容)、string_utils.dart(文本)、xml_message_parser.dart(消息 XML 解析)、batch_processor.dart(批处理节流)。
lib/main.dart:应用与 CLI 启动入口,构建主题与全局 Provider。lib/providers/app_state.dart:全局状态、数据库重连、解密进度、头像缓存。lib/services/database_service.dart:数据库连接、实时 DLL 访问、跨库消息查询与统计。lib/services/analytics_service.dart及advanced_analytics_service.dart:统计分析。lib/services/chat_export_service.dart:导出实现,供 UI/CLI 复用。lib/services/decrypt_service_go.dart/go_decrypt_ffi.dart:数据库解密。lib/services/config_service.dart:配置持久化。lib/services/wechat_wcdb_native.dart:WCDB DLL FFI 封装。lib/pages/:各个业务页面与布局;widgets/:可复用组件(侧边栏、气泡、进度遮罩等)。lib/utils/:通用工具。
- 依赖:
flutter pub get。 - 运行:
flutter run(桌面需已启用目标平台),或flutter build windows/macos/linux。 - CLI:Windows 上直接运行可执行文件,使用
-e/--format/--start/--end/--all参数导出。 - 日志:App 内部使用
LoggerService,CLI 模式附加输出到系统临时目录的echotrace_cli.log。