feat: Cupertino滚轮选择器 + 品牌更名 + UI全面优化
- 日期/时间/次数选择器统一改为底部弹出Cupertino滚轮,无单位标签,双横线选区 - App更名为"小脉健康",副标题"血管病患者的AI健康管理助手" - 健康仪表盘及侧边栏移除体重指标,侧边栏背景改为蓝白渐变 - 健康档案按钮移入功能入口网格,与其他入口样式统一 - 记数据智能体配色改为绿色渐变(#A1FFCE→#69DB8F) - 隐私协议/关于页从Text改为MarkdownBody正确渲染 - 运动计划/饮食记录卡片添加边框和阴影 - 服药次数从chip改为滚轮选择器 - 日期显示格式统一为空格分隔(1999 01 01) - 健康档案页背景改为纯白
This commit is contained in:
@@ -159,14 +159,22 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
|
||||
const SizedBox(height: 16),
|
||||
// 频率选择
|
||||
_label('每日服药次数'), const SizedBox(height: 8),
|
||||
Wrap(
|
||||
spacing: 8,
|
||||
children: List.generate(
|
||||
4,
|
||||
(i) => _chip(
|
||||
'${i + 1}次',
|
||||
_timesPerDay == i + 1,
|
||||
() => _updateTimes(i + 1),
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
final n = await showAppCountPicker(context, initialValue: _timesPerDay, min: 1, max: 4, label: ' 次');
|
||||
if (n != null) _updateTimes(n);
|
||||
},
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsets.all(12),
|
||||
decoration: BoxDecoration(
|
||||
color: AppTheme.surface,
|
||||
borderRadius: BorderRadius.circular(AppTheme.rMd),
|
||||
border: Border.all(color: AppColors.border),
|
||||
),
|
||||
child: Text(
|
||||
'$_timesPerDay 次/天',
|
||||
style: const TextStyle(fontSize: 18),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -180,8 +188,8 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
|
||||
_timesPerDay,
|
||||
(i) => GestureDetector(
|
||||
onTap: () async {
|
||||
final t = await showTimePicker(
|
||||
context: context,
|
||||
final t = await showAppTimePicker(
|
||||
context,
|
||||
initialTime: _times[i],
|
||||
);
|
||||
if (t != null) setState(() => _times[i] = t);
|
||||
@@ -324,8 +332,8 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
|
||||
const SizedBox(height: 6),
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
final d = await showDatePicker(
|
||||
context: context,
|
||||
final d = await showAppDatePicker(
|
||||
context,
|
||||
initialDate: val,
|
||||
firstDate: DateTime(2024),
|
||||
lastDate: DateTime(2030),
|
||||
@@ -341,7 +349,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
|
||||
border: Border.all(color: AppColors.border),
|
||||
),
|
||||
child: Text(
|
||||
'${val.month}/${val.day}',
|
||||
'${val.year} ${val.month.toString().padLeft(2, '0')} ${val.day.toString().padLeft(2, '0')}',
|
||||
style: const TextStyle(fontSize: 18),
|
||||
),
|
||||
),
|
||||
@@ -359,8 +367,8 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
|
||||
const SizedBox(height: 6),
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
final d = await showDatePicker(
|
||||
context: context,
|
||||
final d = await showAppDatePicker(
|
||||
context,
|
||||
initialDate: val ?? DateTime.now(),
|
||||
firstDate: DateTime(2024),
|
||||
lastDate: DateTime(2030),
|
||||
@@ -378,7 +386,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
|
||||
child: Row(
|
||||
children: [
|
||||
Text(
|
||||
val != null ? '${val.month}/${val.day}' : '不设置',
|
||||
val != null ? '${val.year} ${val.month.toString().padLeft(2, '0')} ${val.day.toString().padLeft(2, '0')}' : '不设置',
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
color: val != null ? null : AppTheme.textHint,
|
||||
|
||||
Reference in New Issue
Block a user