Polish health app UI

This commit is contained in:
MingNian
2026-06-26 14:37:17 +08:00
parent 86c7957144
commit df37076c46
46 changed files with 717 additions and 514 deletions

View File

@@ -2885,6 +2885,44 @@ class StaticTextPage extends ConsumerWidget {
### 六、联系我们
如有任何关于隐私的问题,请联系:
邮箱privacy@healthbutler.com
电话400-xxx-xxxx''',
'terms': '''## 服务协议
更新日期2026年6月26日
欢迎使用小脉健康。请您在注册、登录和使用本应用前,仔细阅读并理解本服务协议。您点击同意或继续使用本应用,即表示您已阅读、理解并同意本协议。
### 一、服务内容
小脉健康为用户提供健康数据记录、用药管理、报告管理、运动计划、健康日历、AI 健康建议及在线医生咨询等功能。具体服务内容会根据产品版本和实际开通情况进行调整。
### 二、账号使用
- 您应使用真实、准确、有效的信息完成注册和登录。
- 您应妥善保管账号、验证码及设备信息,不得将账号转让、出租或出借给他人使用。
- 因您主动泄露账号信息或操作不当造成的损失,由您自行承担。
### 三、健康服务说明
- 本应用提供的 AI 分析、健康提醒和运动饮食建议仅作为健康管理参考,不替代医生面对面的诊断、治疗或处方。
- 如您出现胸痛、呼吸困难、意识异常、严重头痛等紧急情况,应立即拨打急救电话或前往医疗机构就诊。
- 医生咨询、报告解读等内容应结合您的实际病史、检查结果和线下诊疗意见综合判断。
### 四、用户行为规范
您在使用本应用时不得:
- 提交虚假、违法、侵权或误导性信息;
- 干扰应用正常运行,或尝试未经授权访问系统、数据和接口;
- 利用本应用从事违法违规、损害他人权益或扰乱医疗服务秩序的行为。
### 五、数据与隐私
我们会按照《隐私政策》收集、使用、存储和保护您的个人信息及健康数据。您可在 App 内「设置」中查看隐私政策,并依法行使查询、更正、删除和注销账号等权利。
### 六、服务变更与中止
为提升服务质量或满足合规要求,我们可能对功能、页面、规则或服务范围进行调整。若因维护、升级、网络故障、不可抗力或法律法规要求导致服务暂时中断,我们会尽力降低对您的影响。
### 七、责任限制
在法律允许范围内,小脉健康不对因第三方服务、网络故障、设备异常、用户误操作或不可抗力造成的服务中断、数据延迟或损失承担超出法定范围的责任。
### 八、联系我们
如您对本协议或服务使用有任何疑问,请通过以下方式联系我们:
邮箱support@healthbutler.com
电话400-xxx-xxxx''',
'about': '''## 关于小脉健康
@@ -2914,56 +2952,76 @@ class StaticTextPage extends ConsumerWidget {
© 2025-2026 小脉健康团队。保留所有权利。
本软件受中华人民共和国著作权法保护。''',
};
return GradientScaffold(
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
scrolledUnderElevation: 0.5,
surfaceTintColor: Colors.transparent,
leading: IconButton(
icon: const Icon(Icons.chevron_left),
icon: const Icon(Icons.chevron_left, color: AppColors.textPrimary),
onPressed: () => popRoute(ref),
),
title: Text(
titles[type] ?? '',
style: TextStyle(
style: const TextStyle(
fontSize: 19,
color: AppColors.textPrimary,
fontWeight: FontWeight.w600,
fontWeight: FontWeight.w800,
),
),
centerTitle: true,
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(20),
child: MarkdownBody(
data: contents[type] ?? '内容加载中...',
selectable: true,
styleSheet: MarkdownStyleSheet(
p: const TextStyle(
fontSize: 17,
height: 1.8,
color: AppColors.textPrimary,
),
h1: const TextStyle(
fontSize: 22,
fontWeight: FontWeight.w700,
color: AppColors.textPrimary,
height: 1.5,
),
h2: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.w700,
color: AppColors.textPrimary,
height: 1.5,
),
h3: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.w700,
color: AppColors.textPrimary,
height: 1.5,
),
listBullet: const TextStyle(
fontSize: 17,
height: 1.8,
color: AppColors.textPrimary,
padding: const EdgeInsets.fromLTRB(22, 18, 22, 36),
child: Center(
child: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 680),
child: MarkdownBody(
data: contents[type] ?? '内容加载中...',
selectable: true,
styleSheet: MarkdownStyleSheet(
textAlign: WrapAlignment.start,
p: const TextStyle(
fontSize: 15,
height: 1.85,
fontWeight: FontWeight.w500,
color: AppColors.textPrimary,
),
h1Align: WrapAlignment.center,
h1Padding: const EdgeInsets.only(bottom: 18),
h1: const TextStyle(
fontSize: 24,
fontWeight: FontWeight.w900,
color: AppColors.textPrimary,
height: 1.35,
letterSpacing: 0,
),
h2Padding: const EdgeInsets.only(top: 18, bottom: 8),
h2: const TextStyle(
fontSize: 19,
fontWeight: FontWeight.w900,
color: AppColors.textPrimary,
height: 1.45,
letterSpacing: 0,
),
h3Padding: const EdgeInsets.only(top: 16, bottom: 6),
h3: const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w800,
color: AppColors.textPrimary,
height: 1.45,
letterSpacing: 0,
),
listBullet: const TextStyle(
fontSize: 15,
height: 1.85,
color: AppColors.textPrimary,
),
blockSpacing: 10,
listIndent: 22,
),
),
),
),