style: 淡薰紫 Lavender Breeze + UI修复

- 主色改淡薰紫 #8B9CF7 + 白底 清新风格
- 每个智能体卡不同淡色调
- 删除欢迎卡底部"或直接对我说"
- 运动创建/打卡接入 API
- 全项目薄荷绿→淡紫替换
This commit is contained in:
MingNian
2026-06-03 20:46:39 +08:00
parent f46c30f8e7
commit f6c1ea7ec9
18 changed files with 306 additions and 254 deletions

View File

@@ -99,7 +99,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('已添加 ${_items.length} 种药品'),
backgroundColor: const Color(0xFF14B8A6),
backgroundColor: const Color(0xFF8B9CF7),
),
);
ref.invalidate(medicationListProvider);
@@ -136,7 +136,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFF6F9FB),
backgroundColor: const Color(0xFFF8F9FC),
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
@@ -158,7 +158,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
child: const Text(
'保存',
style: TextStyle(
color: Color(0xFF14B8A6),
color: Color(0xFF8B9CF7),
fontWeight: FontWeight.w600,
),
),
@@ -204,7 +204,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w600,
color: Color(0xFF14B8A6),
color: Color(0xFF8B9CF7),
),
),
if (_items.length > 1)
@@ -390,7 +390,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.access_time, size: 16, color: Color(0xFF14B8A6)),
const Icon(Icons.access_time, size: 16, color: Color(0xFF8B9CF7)),
const SizedBox(width: 6),
Text(
time.format(context),
@@ -410,11 +410,11 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
icon: const Icon(Icons.add, size: 18),
label: const Text('添加', style: TextStyle(fontSize: 14)),
style: OutlinedButton.styleFrom(
foregroundColor: const Color(0xFF14B8A6),
side: const BorderSide(color: Color(0xFFC0E8E2)),
foregroundColor: const Color(0xFF8B9CF7),
side: const BorderSide(color: Color(0xFFD0D5FC)),
padding: const EdgeInsets.symmetric(vertical: 12),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
backgroundColor: const Color(0xFFF2FAF9),
backgroundColor: const Color(0xFFF0F2FF),
),
),
);
@@ -438,7 +438,7 @@ class _MedicationEditPageState extends ConsumerState<MedicationEditPage> {
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
borderSide: const BorderSide(color: Color(0xFF14B8A6)),
borderSide: const BorderSide(color: Color(0xFF8B9CF7)),
),
);
}

View File

@@ -9,7 +9,7 @@ class MedicationListPage extends ConsumerWidget {
@override Widget build(BuildContext context, WidgetRef ref) {
final meds = ref.watch(medicationListProvider);
return Scaffold(
backgroundColor: const Color(0xFFF6F9FB),
backgroundColor: const Color(0xFFF8F9FC),
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
@@ -19,9 +19,9 @@ class MedicationListPage extends ConsumerWidget {
TextButton(
onPressed: () => pushRoute(ref, 'medicationEdit'),
child: Row(mainAxisSize: MainAxisSize.min, children: [
const Icon(Icons.add_circle_outline, size: 18, color: Color(0xFF14B8A6)),
const Icon(Icons.add_circle_outline, size: 18, color: Color(0xFF8B9CF7)),
const SizedBox(width: 4),
const Text('添加新药', style: TextStyle(color: Color(0xFF14B8A6), fontSize: 14)),
const Text('添加新药', style: TextStyle(color: Color(0xFF8B9CF7), fontSize: 14)),
]),
),
],
@@ -47,7 +47,7 @@ class MedicationListPage extends ConsumerWidget {
},
);
},
loading: () => const Center(child: CircularProgressIndicator(color: Color(0xFF14B8A6))),
loading: () => const Center(child: CircularProgressIndicator(color: Color(0xFF8B9CF7))),
error: (_, __) => _empty(context),
)),
_buildReminderBar(),
@@ -65,11 +65,11 @@ class MedicationListPage extends ConsumerWidget {
width: 40,
height: 40,
decoration: BoxDecoration(
color: const Color(0xFFE6FAF6),
color: const Color(0xFFF0F2FF),
borderRadius: BorderRadius.circular(20),
border: Border.all(color: const Color(0xFF14B8A6).withAlpha(50)),
border: Border.all(color: const Color(0xFF8B9CF7).withAlpha(50)),
),
child: const Icon(Icons.notifications_active_outlined, size: 20, color: Color(0xFF14B8A6)),
child: const Icon(Icons.notifications_active_outlined, size: 20, color: Color(0xFF8B9CF7)),
),
const SizedBox(width: 12),
const Expanded(child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
@@ -102,9 +102,9 @@ class _TabChip extends StatelessWidget {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 7),
decoration: BoxDecoration(
color: active ? const Color(0xFF14B8A6) : Colors.white,
color: active ? const Color(0xFF8B9CF7) : Colors.white,
borderRadius: BorderRadius.circular(16),
border: Border.all(color: active ? const Color(0xFF14B8A6) : const Color(0xFFE0E0E0)),
border: Border.all(color: active ? const Color(0xFF8B9CF7) : const Color(0xFFE0E0E0)),
),
child: Text(
label,
@@ -130,14 +130,14 @@ class _MedicationCard extends StatelessWidget {
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
boxShadow: [BoxShadow(color: const Color(0xFF14B8A6).withAlpha(10), blurRadius: 4, offset: const Offset(0, 2))],
boxShadow: [BoxShadow(color: const Color(0xFF8B9CF7).withAlpha(10), blurRadius: 4, offset: const Offset(0, 2))],
),
child: Row(children: [
Container(
width: 48,
height: 48,
decoration: BoxDecoration(
color: const Color(0xFFF2FAF9),
color: const Color(0xFFF0F2FF),
borderRadius: BorderRadius.circular(14),
),
child: const Center(child: Text('💊', style: TextStyle(fontSize: 24))),