feat: UI 系统中心化 + 趋势图重构 + 法律文档 H5 上线

- UI 系统: 新增 design_tokens / module_visuals / app_buttons / app_status_badge / app_toast / ai_content 六个共享模块; 28 个页面接入, SnackBar 全部替换为 AppToast
- 趋势图: 直线折线 + 渐变填充 + 阴影; 去网格线; X 轴日+月份分隔; Y 轴整数刻度最多 4 个; 点击数据点/录入记录显示上方浮层, 选中点变实心
- 法律文档 H5: 后端 wwwroot 托管隐私政策/服务协议/关于/个人信息收集清单/第三方 SDK 清单 + 索引页; Program.cs 启用 UseDefaultFiles + UseStaticFiles
- 其他: auth_provider 登录流程调整; api_client IP 适配; 主页智能体栏间距优化
This commit is contained in:
MingNian
2026-07-08 21:25:07 +08:00
parent 7a93237069
commit 1c020b8ae5
45 changed files with 3480 additions and 1000 deletions

View File

@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shadcn_ui/shadcn_ui.dart';
import '../../core/app_colors.dart';
import '../../core/app_module_visuals.dart';
import '../../core/app_theme.dart';
import '../../core/navigation_provider.dart';
import '../../providers/data_providers.dart';
@@ -619,15 +620,19 @@ class _NotificationVisual {
const _NotificationVisual(this.icon, this.color, this.lightColor, this.label);
factory _NotificationVisual.fromModule(AppModuleVisual visual) {
return _NotificationVisual(
visual.icon,
visual.color,
visual.lightColor,
visual.label,
);
}
factory _NotificationVisual.of(InAppNotification item) {
switch (item.actionType) {
case 'exercise':
return const _NotificationVisual(
LucideIcons.activity,
Color(0xFF16A34A),
Color(0xFFEAF8EF),
'运动',
);
return _NotificationVisual.fromModule(AppModuleVisuals.exercise);
case 'health':
return item.severity == 'critical'
? const _NotificationVisual(
@@ -636,12 +641,7 @@ class _NotificationVisual {
Color(0xFFFEE2E2),
'紧急',
)
: const _NotificationVisual(
LucideIcons.heartPulse,
Color(0xFFF59E0B),
Color(0xFFFEF3C7),
'健康',
);
: _NotificationVisual.fromModule(AppModuleVisuals.health);
case 'report':
return item.severity == 'error'
? const _NotificationVisual(
@@ -650,19 +650,9 @@ class _NotificationVisual {
Color(0xFFFEE2E2),
'报告',
)
: const _NotificationVisual(
LucideIcons.fileCheck2,
Color(0xFF8B5CF6),
Color(0xFFEDE9FE),
'报告',
);
: _NotificationVisual.fromModule(AppModuleVisuals.report);
default:
return const _NotificationVisual(
LucideIcons.pill,
Color(0xFF3B82F6),
Color(0xFFDBEAFE),
'用药',
);
return _NotificationVisual.fromModule(AppModuleVisuals.medication);
}
}
}