style: 统一患者端页面视觉并补齐入口跳转

- 调整全局颜色基调,提高灰色文字和边框对比度
- 新增企业级页面头部、统计块和卡片通用组件
- 优化用药管理、报告管理、个人信息、通知中心页面布局
- 新增多张页面插画和通用 UI 装饰素材
- 运动计划列表更紧凑,并新增运动计划详情路由
- 补齐医生端协议入口和原始报告查看入口
- 移除设置页未实现的字体大小和清除缓存入口
This commit is contained in:
MingNian
2026-06-25 22:13:42 +08:00
parent 53ce19e8c3
commit 18df2f3285
23 changed files with 1266 additions and 470 deletions

View File

@@ -6,7 +6,7 @@ import 'local_database.dart';
/// API 基础地址。可通过 --dart-define=API_BASE_URL=http://host:5000 覆盖。
const String baseUrl = String.fromEnvironment(
'API_BASE_URL',
defaultValue: 'http://10.4.191.129:5000',
defaultValue: 'http://10.4.202.36:5000',
);
class ApiException implements Exception {

View File

@@ -5,37 +5,37 @@ class AppColors {
AppColors._();
static const Color primary = Color(0xFF7C5CFF);
static const Color primaryLight = Color(0xFFEDE8FF);
static const Color primarySoft = Color(0xFFF6F3FF);
static const Color primaryDark = Color(0xFF5B3FE8);
static const Color blueMeasure = Color(0xFF4F7CFF);
static const Color primaryLight = Color(0xFFEDE9FF);
static const Color primarySoft = Color(0xFFF7F4FF);
static const Color primaryDark = Color(0xFF5B4BDB);
static const Color blueMeasure = Color(0xFF60A5FA);
static const Color doctorBlue = Color(0xFF3B82F6);
static const Color auraLavender = Color(0xFFA78BFA);
static const Color auraIndigo = Color(0xFF818CF8);
static const Color auraOrchid = Color(0xFFC084FC);
static const Color auraDeepIndigo = Color(0xFF6366F1);
static const Color mintAccent = Color(0xFF2DD4BF);
static const Color peachAccent = Color(0xFFFFA6A6);
static const Color roseAccent = Color(0xFFF43F5E);
static const Color meadowAccent = Color(0xFF72F874);
static const Color sageAccent = Color(0xFF9CD9C9);
static const Color auraLavender = Color(0xFFC4B5FD);
static const Color auraIndigo = Color(0xFF8B5CF6);
static const Color auraOrchid = Color(0xFFE879F9);
static const Color auraDeepIndigo = Color(0xFF7C3AED);
static const Color mintAccent = Color(0xFF67E8F9);
static const Color peachAccent = Color(0xFFFBCFE8);
static const Color roseAccent = Color(0xFFFB7185);
static const Color meadowAccent = Color(0xFFBAE6FD);
static const Color sageAccent = Color(0xFFE9D5FF);
static const Color background = Color(0xFFFAF8FF);
static const Color backgroundSoft = Color(0xFFFFFCFF);
static const Color background = Color(0xFFF8FAFF);
static const Color backgroundSoft = Color(0xFFFFFFFF);
static const Color cardBackground = Color(0xFFFFFFFF);
static const Color cardInner = Color(0xFFF7F5FF);
static const Color cardInner = Color(0xFFF1F5F9);
static const Color pageGrey = background;
static const Color iconBg = Color(0xFFF2EEFF);
static const Color avatarBg = Color(0xFFF4EFFF);
static const Color iconBg = Color(0xFFEFF6FF);
static const Color avatarBg = Color(0xFFF5F3FF);
static const Color textPrimary = Color(0xFF1F2937);
static const Color textSecondary = Color(0xFF667085);
static const Color textHint = Color(0xFF98A2B3);
static const Color textSecondary = Color(0xFF475467);
static const Color textHint = Color(0xFF667085);
static const Color textOnGradient = Color(0xFFFFFFFF);
static const Color border = Color(0xFFE5E7EB);
static const Color borderLight = Color(0xFFF1F3F8);
static const Color divider = Color(0xFFEFF2F7);
static const Color border = Color(0xFFD5DCE5);
static const Color borderLight = Color(0xFFE2E8F0);
static const Color divider = Color(0xFFE5EAF1);
static const Color success = Color(0xFF16A34A);
static const Color successLight = Color(0xFFEAF8EF);
@@ -56,10 +56,10 @@ class AppColors {
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFFFFCFF),
Color(0xFFF9F5FF),
Color(0xFFF5F1FF),
Color(0xFFF2F6FF),
Color(0xFFFFFFFF),
Color(0xFFEFF6FF),
Color(0xFFF5F3FF),
Color(0xFFFDF2F8),
],
stops: [0.0, 0.42, 0.74, 1.0],
);
@@ -67,63 +67,68 @@ class AppColors {
static const LinearGradient drawerGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFFFFFFFF), Color(0xFFFBF7FF), Color(0xFFF0F4FF)],
colors: [Color(0xFFFFFFFF), Color(0xFFEFF6FF), Color(0xFFFDF2F8)],
stops: [0.0, 0.52, 1.0],
);
static const LinearGradient surfaceGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFFFFFFFF), Color(0xFFFCFAFF)],
colors: [Color(0xFFFFFFFF), Color(0xFFF8FAFC)],
);
static const LinearGradient softGlassGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xF7FFFFFF), Color(0xECFFFFFF)],
colors: [Color(0xFAFFFFFF), Color(0xF0FFFFFF)],
);
static const LinearGradient roseVioletGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFF8B5CF6), Color(0xFFF43F5E)],
colors: [Color(0xFF8B5CF6), Color(0xFFFB7185)],
);
static const LinearGradient sageVioletGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFF9CD9C9), Color(0xFFAE2EF9)],
colors: [Color(0xFF60A5FA), Color(0xFFE879F9)],
);
static const LinearGradient meadowVioletGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFF72F874), Color(0xFF8C6BD9)],
colors: [Color(0xFFBAE6FD), Color(0xFFC4B5FD)],
);
static const LinearGradient calmHealthGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFF9CD9C9), Color(0xFF818CF8)],
colors: [Color(0xFF60A5FA), Color(0xFFC4B5FD)],
);
static const LinearGradient warmCareGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFFFFA6A6), Color(0xFFC084FC)],
colors: [Color(0xFFFBCFE8), Color(0xFFC4B5FD)],
);
static const LinearGradient actionOutlineGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFFC084FC), Color(0xFF818CF8), Color(0xFFC084FC), Color(0xFF818CF8)],
colors: [
Color(0xFFC084FC),
Color(0xFF818CF8),
Color(0xFFC084FC),
Color(0xFF818CF8),
],
stops: [0.0, 0.3, 0.6, 1.0],
);
static const LinearGradient doctorGradient = LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFF4F7CFF), Color(0xFF7C5CFF)],
colors: [Color(0xFF60A5FA), Color(0xFF8B5CF6)],
);
static List<BoxShadow> get cardShadow => [

View File

@@ -66,6 +66,8 @@ Widget buildPage(RouteInfo route, WidgetRef ref) {
);
case 'exercisePlan':
return const ExercisePlanPage();
case 'exercisePlanDetail':
return ExercisePlanDetailPage(id: params['id'] ?? '');
case 'exerciseCreate':
return const ExercisePlanCreatePage();
case 'dietRecords':