feat: 新增诊断报告全流程功能,适配登录后报告跳转逻辑

实现了入门测/出门测报告的完整链路:
1. 新增UserInfo模型的出门测报告标记字段与相关接口
2. 新增全局报告路由拦截器,自动在登录后/应用回前台时检查报告状态
3. 新增报告相关API、页面与路由配置,包含欢迎页、H5壳子、AI计算页
4. 适配登录成功后的报告跳转逻辑,更新用户状态管理方法
This commit is contained in:
崔宝新
2026-09-09 16:49:51 +08:00
parent c0c673e2d2
commit 5e4cfe9ac6
13 changed files with 1441 additions and 18 deletions
+7 -2
View File
@@ -9,6 +9,7 @@ import 'package:new_learn/core/config/app_config.dart';
import 'package:new_learn/core/logger/app_talker.dart';
import 'package:new_learn/core/providers/network_status_provider.dart';
import 'package:new_learn/core/providers/privacy_provider.dart';
import 'package:new_learn/core/report/report_redirect.dart';
import 'package:new_learn/core/router/app_router.dart';
import 'package:new_learn/core/services/local_notification_service.dart';
import 'package:new_learn/core/utils/screen_adapt_template.dart'; // 复用 AppAdapt 适配配置
@@ -89,8 +90,12 @@ class TabApp extends StatelessWidget {
// 这样冷启动时不会先看到登录页/主页闪一下,再被路由重定向到隐私页,
// 而是直接由全屏拦截页先接管。
builder: (context, child) {
final content =
PrivacyStartupGate(child: child ?? const SizedBox.shrink());
// ReportRedirectNotifier 必须包在 MaterialApp 里面(能拿到 GoRouterState)
// 但在 PrivacyStartupGate 外层(隐私同意后的页面才能拦截)
final withRedirect = ReportRedirectNotifier(
child: child ?? const SizedBox.shrink(),
);
final content = PrivacyStartupGate(child: withRedirect);
final bootstrapped = _LocalNotificationBootstrapper(child: content);
if (kReleaseMode) return bootstrapped;
return TalkerWrapper(