Files
AI-Health/health_app/lib/widgets/app_gradient_widgets.dart
MingNian 6e5d3e64cd feat: 健康仪表盘配色调整 + 登录页品牌升级 + iOS 配置 + 隐私文案修订 + 文档清理
## UI 配色
- 健康仪表盘: 背景从蓝紫粉三色渐变改为 #4FACFE 纯色蓝, 白字清晰不抢眼
- app_colors / app_design_tokens / app_theme: 配色体系微调
- 多个 widget 和页面跟随配色更新(health_drawer/admin_drawer/doctor_drawer/enterprise_widgets 等)

## 登录页品牌升级
- 新增品牌素材: drawer_background_v2 / login_background_v2 / health_login_character_transparent
- login_page 重构, 接入新品牌视觉
- app.dart 启动流程调整

## iOS / Android 配置
- Info.plist: 权限描述调整
- AppIcon / LaunchImage: 资源更新
- AndroidManifest: 权限微调

## 隐私文案修订
- privacy.html: 蓝牙设备描述调整为"标准蓝牙血压服务", 移除未上线设备类型表述
- terms.html: 移除"在线医生咨询"相关条款, 服务范围收窄

## 通知中心
- notification_center_page: 重构通知项布局

## 其他
- 删除已完成的计划/spec 文档(ui-system-first-pass / apple-sign-in / secondary-page-color-refresh / notification-preferences-design / ui-design-system)
- 新增 native_navigation_test
- 新增 HANDOFF 交接文档
- home_message_order_test 更新
- .gitignore 调整
2026-07-16 22:30:23 +08:00

94 lines
2.1 KiB
Dart

import 'package:flutter/material.dart';
import '../core/app_colors.dart';
class AppGradientText extends StatelessWidget {
final String text;
final TextStyle style;
final Gradient gradient;
final TextAlign? textAlign;
const AppGradientText(
this.text, {
super.key,
required this.style,
this.gradient = AppColors.primaryGradient,
this.textAlign,
});
@override
Widget build(BuildContext context) {
return ShaderMask(
shaderCallback: gradient.createShader,
blendMode: BlendMode.srcIn,
child: Text(
text,
textAlign: textAlign,
style: style.copyWith(color: Colors.white),
),
);
}
}
class AppGradientIcon extends StatelessWidget {
final IconData icon;
final double size;
final Gradient gradient;
const AppGradientIcon({
super.key,
required this.icon,
required this.size,
this.gradient = AppColors.primaryGradient,
});
@override
Widget build(BuildContext context) {
return ShaderMask(
shaderCallback: gradient.createShader,
blendMode: BlendMode.srcIn,
child: Icon(icon, size: size, color: Colors.white),
);
}
}
class AppGradientOutlineButton extends StatelessWidget {
final String label;
final VoidCallback onTap;
final Gradient gradient;
const AppGradientOutlineButton({
super.key,
required this.label,
required this.onTap,
this.gradient = AppColors.primaryGradient,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Container(
height: 50,
decoration: BoxDecoration(
gradient: gradient,
borderRadius: BorderRadius.circular(18),
),
padding: const EdgeInsets.all(1.2),
child: Container(
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(17),
),
child: AppGradientText(
label,
gradient: gradient,
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600),
),
),
),
);
}
}