From 2e770ff98da2dc64a282c9b4eefa876837e0c673 Mon Sep 17 00:00:00 2001 From: Ponshu Developer Date: Sun, 19 Apr 2026 08:18:48 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=E3=83=8F=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E8=89=B2=E3=82=92AppColors=E3=82=BB?= =?UTF-8?q?=E3=83=9E=E3=83=B3=E3=83=86=E3=82=A3=E3=83=83=E3=82=AF=E3=82=AB?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E3=81=AB=E7=BD=AE=E6=8F=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pending_analysis_banner: Colors.orange.* → appColors.warning(グラデーション・影・バッジ) - activity_stats: Colors.orange → appColors.warning(残回数少ない警告色・テキスト) - scan_screen: Colors.grey → appColors.textTertiary(蔵元/産地テキスト) - sake_no_match_state: Colors.grey[400/600] → appColors.textTertiary(空状態アイコン・テキスト) - camera_screen: Colors.greenAccent → appColors.success(解析開始ボタン) Co-Authored-By: Claude Sonnet 4.6 --- lib/screens/camera_screen.dart | 2 +- lib/screens/scan_screen.dart | 2 +- lib/widgets/gamification/activity_stats.dart | 4 ++-- lib/widgets/home/sake_no_match_state.dart | 6 ++++-- lib/widgets/pending_analysis_banner.dart | 11 +++++++---- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/screens/camera_screen.dart b/lib/screens/camera_screen.dart index 6e3f023..b1107a3 100644 --- a/lib/screens/camera_screen.dart +++ b/lib/screens/camera_screen.dart @@ -596,7 +596,7 @@ class _CameraScreenState extends ConsumerState with SingleTickerPr IconButton( icon: Badge( label: Text('${capturedImages.length}'), - child: const Icon(LucideIcons.playCircle, color: Colors.greenAccent, size: 40), + child: Icon(LucideIcons.playCircle, color: appColors.success, size: 40), ), onPressed: analyzeImages, tooltip: '解析を開始', diff --git a/lib/screens/scan_screen.dart b/lib/screens/scan_screen.dart index 3209521..c38061a 100644 --- a/lib/screens/scan_screen.dart +++ b/lib/screens/scan_screen.dart @@ -395,7 +395,7 @@ class _DigitalSakeCardDialog extends StatelessWidget { const SizedBox(height: 8), Text( '$brewery / $prefecture', - style: const TextStyle(fontSize: 14, color: Colors.grey), + style: TextStyle(fontSize: 14, color: appColors.textTertiary), ), const SizedBox(height: 20), diff --git a/lib/widgets/gamification/activity_stats.dart b/lib/widgets/gamification/activity_stats.dart index e66fef5..f51d8ba 100644 --- a/lib/widgets/gamification/activity_stats.dart +++ b/lib/widgets/gamification/activity_stats.dart @@ -37,7 +37,7 @@ class ActivityStats extends ConsumerWidget { final apiColor = isExhausted ? appColors.error : isLow - ? Colors.orange + ? appColors.warning : appColors.brandPrimary; // Bento Grid: 総登録数を大カード、お気に入り・撮影日数を小カード2枚横並び @@ -192,7 +192,7 @@ class ActivityStats extends ConsumerWidget { const SizedBox(height: 6), Text( '残り$remaining回です。', - style: const TextStyle(fontSize: 10, color: Colors.orange), + style: TextStyle(fontSize: 10, color: appColors.warning), ), ], ], diff --git a/lib/widgets/home/sake_no_match_state.dart b/lib/widgets/home/sake_no_match_state.dart index 6a0b128..ec96009 100644 --- a/lib/widgets/home/sake_no_match_state.dart +++ b/lib/widgets/home/sake_no_match_state.dart @@ -2,19 +2,21 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../providers/filter_providers.dart'; import 'package:lucide_icons/lucide_icons.dart'; +import '../../theme/app_colors.dart'; class SakeNoMatchState extends ConsumerWidget { const SakeNoMatchState({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { + final appColors = Theme.of(context).extension()!; return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon(LucideIcons.filterX, size: 48, color: Colors.grey[400]), + Icon(LucideIcons.filterX, size: 48, color: appColors.textTertiary), const SizedBox(height: 16), - Text('条件に一致するお酒が見つかりません', style: TextStyle(color: Colors.grey[600])), + Text('条件に一致するお酒が見つかりません', style: TextStyle(color: appColors.textTertiary)), TextButton( child: const Text('フィルタを解除'), onPressed: () { diff --git a/lib/widgets/pending_analysis_banner.dart b/lib/widgets/pending_analysis_banner.dart index 53f802c..91365f6 100644 --- a/lib/widgets/pending_analysis_banner.dart +++ b/lib/widgets/pending_analysis_banner.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:lucide_icons/lucide_icons.dart'; import '../services/draft_service.dart'; import '../screens/pending_analysis_screen.dart'; +import '../theme/app_colors.dart'; /// 未解析Draft(解析待ちアイテム)通知バナー /// @@ -24,19 +25,21 @@ class PendingAnalysisBanner extends ConsumerWidget { return const SizedBox.shrink(); } + final appColors = Theme.of(context).extension()!; + return Container( margin: const EdgeInsets.all(12), decoration: BoxDecoration( gradient: LinearGradient( colors: [ - Colors.orange.shade600, - Colors.orange.shade400, + appColors.warning, + appColors.warning.withValues(alpha: 0.85), ], ), borderRadius: BorderRadius.circular(12), boxShadow: [ BoxShadow( - color: Colors.orange.withValues(alpha: 0.3), + color: appColors.warning.withValues(alpha: 0.3), blurRadius: 8, offset: const Offset(0, 2), ), @@ -98,7 +101,7 @@ class PendingAnalysisBanner extends ConsumerWidget { child: Text( '$pendingCount件', style: TextStyle( - color: Colors.orange.shade700, + color: appColors.warning, fontSize: 14, fontWeight: FontWeight.bold, ),