feat: 健康录入提醒 + 多指标异常 + 用药漏服 + UI 优化

后端
- NotificationPreference 增加健康录入提醒总开关和 5 子项(血压/心率/血糖/血氧/体重)
- EF 迁移 AddHealthRecordReminder
- 新增 GET/PUT /api/notification-prefs
- 新增 HealthRecordReminderService 每天 9 点/12 点扫描未录入用户推送提醒

前端
- 通知偏好对接真实后端 API
- 设置页新增「健康录入提醒」总开关+5 子项
- 通知中心右上角加齿轮跳设置页
- 今日健康卡片:4 项异常检测+多项合并;用药只显漏服并按时间窗口区分文案
- 侧边栏头像改圆形白底灰图标,去掉紫色品牌渐变
- 整体背景统一浅灰白 #F6F8FC,去掉浅紫渐变
- 设置页简化(去掉分组/彩色图标方块)
- 健康档案保存按钮移到右上角,TextButton 全局默认黑色
- API baseUrl 跟随网络环境
This commit is contained in:
MingNian
2026-06-24 22:11:21 +08:00
parent 7ff429e071
commit 53ce19e8c3
18 changed files with 2379 additions and 565 deletions

View File

@@ -361,10 +361,8 @@ class AppBackground extends StatelessWidget {
Widget build(BuildContext context) {
final content = safeArea ? SafeArea(child: child) : child;
return DecoratedBox(
decoration: const BoxDecoration(gradient: AppColors.bgGradient),
child: content,
);
// 全局浅灰白背景,已弃用紫色渐变。
return ColoredBox(color: const Color(0xFFF6F8FC), child: content);
}
}
@@ -387,16 +385,15 @@ class GradientScaffold extends StatelessWidget {
});
@override
Widget build(BuildContext context) => AppBackground(
child: Scaffold(
backgroundColor: Colors.transparent,
appBar: appBar,
body: body,
floatingActionButton: floatingActionButton,
drawer: drawer,
bottomNavigationBar: bottomNavigationBar,
extendBody: extendBody,
),
Widget build(BuildContext context) => Scaffold(
// 内部页面统一使用浅灰白底,对话流首页因直接使用 AppBackground 仍保留紫色渐变。
backgroundColor: const Color(0xFFF6F8FC),
appBar: appBar,
body: body,
floatingActionButton: floatingActionButton,
drawer: drawer,
bottomNavigationBar: bottomNavigationBar,
extendBody: extendBody,
);
}
@@ -563,6 +560,12 @@ class AppTheme {
),
),
// TextButton 全局默认黑色文字,避免出现浅紫色按钮。
// 需要红色(如删除)时仍可在使用处单独 styleFrom(foregroundColor: AppColors.error) 覆盖。
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(foregroundColor: text),
),
dialogTheme: DialogThemeData(
backgroundColor: surface,
surfaceTintColor: Colors.transparent,