From a62bcd1d11cbaba855f058e351f30432270b3664 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 16 Apr 2026 23:50:39 +0000 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 意図的な箇所(カメラUI・AppBar白テキスト・ハート色・Proバッジ等)はKEEP。 以下のUIロジックに影響しない7ファイルのみ変更: - Colors.grey.shade400/[400] → appColors.iconSubtle (アイコン、無効状態) - Colors.grey.shade300 → appColors.divider (プレースホルダー背景) - Colors.grey → appColors.textSecondary / iconSubtle / divider (文脈別) - Colors.grey[200] → appColors.surfaceSubtle (プログレスバー背景) - Colors.orange → appColors.warning (警告スナックバー) - Colors.green / Colors.red → appColors.success / error (完了・失敗スナックバー) _createBackup()にappColorsをasync前にキャプチャするFlutterベストプラクティスを適用。 コメント化されていたデッドコメントも同時削除。 https://claude.ai/code/session_01DWQpnqrQWwxVKKWSL9kDPp --- lib/screens/home_screen.dart | 4 ++-- lib/screens/main_screen.dart | 2 +- lib/screens/menu_pricing_screen.dart | 8 ++++---- lib/screens/pending_analysis_screen.dart | 6 +++--- lib/widgets/map/prefecture_tile_map.dart | 2 +- lib/widgets/sake_detail/sake_detail_specs.dart | 6 +++--- lib/widgets/settings/backup_settings_section.dart | 9 +++------ 7 files changed, 17 insertions(+), 20 deletions(-) diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 1fb79b4..94ce523 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -184,11 +184,11 @@ class HomeScreen extends ConsumerWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon(LucideIcons.clipboardCheck, size: 60, color: Colors.grey[400]), + Icon(LucideIcons.clipboardCheck, size: 60, color: appColors.iconSubtle), const SizedBox(height: 16), Text(t['noMenuItems'], style: const TextStyle(fontWeight: FontWeight.bold)), const SizedBox(height: 8), - Text(t['goBackToList'], textAlign: TextAlign.center, style: const TextStyle(color: Colors.grey)), + Text(t['goBackToList'], textAlign: TextAlign.center, style: TextStyle(color: appColors.textSecondary)), ], ), ); diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index d239d85..5c61f7d 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -65,7 +65,7 @@ class _MainScreenState extends ConsumerState { clipBehavior: Clip.none, alignment: Alignment.center, children: [ - Icon(featureIcon, size: 48, color: Colors.grey.shade400), + Icon(featureIcon, size: 48, color: appColors.iconSubtle), Positioned( right: -8, top: -8, diff --git a/lib/screens/menu_pricing_screen.dart b/lib/screens/menu_pricing_screen.dart index acec108..7009a07 100644 --- a/lib/screens/menu_pricing_screen.dart +++ b/lib/screens/menu_pricing_screen.dart @@ -123,7 +123,7 @@ class _MenuPricingScreenState extends ConsumerState { preferredSize: const Size.fromHeight(2), child: LinearProgressIndicator( value: 2 / 3, // Step 2 of 3 = 66% - backgroundColor: Colors.grey[200], + backgroundColor: Theme.of(context).extension()!.surfaceSubtle, valueColor: AlwaysStoppedAnimation(Theme.of(context).primaryColor), minHeight: 2, ), @@ -320,9 +320,9 @@ class _MenuPricingScreenState extends ConsumerState { // Drag Handle ReorderableDragStartListener( index: index, - child: const Padding( - padding: EdgeInsets.only(right: 12, top: 4, bottom: 4), - child: Icon(Icons.drag_indicator, color: Colors.grey), + child: Padding( + padding: const EdgeInsets.only(right: 12, top: 4, bottom: 4), + child: Icon(Icons.drag_indicator, color: appColors.iconSubtle), ), ), Expanded( diff --git a/lib/screens/pending_analysis_screen.dart b/lib/screens/pending_analysis_screen.dart index 3036f41..01b1689 100644 --- a/lib/screens/pending_analysis_screen.dart +++ b/lib/screens/pending_analysis_screen.dart @@ -344,10 +344,10 @@ class _PendingAnalysisScreenState extends ConsumerState { width: 60, height: 60, decoration: BoxDecoration( - color: Colors.grey.shade300, + color: appColors.divider, borderRadius: BorderRadius.circular(8), ), - child: const Icon(LucideIcons.image, color: Colors.grey), + child: Icon(LucideIcons.image, color: appColors.iconSubtle), ), title: const Text( '解析待ち', @@ -390,7 +390,7 @@ class _PendingAnalysisScreenState extends ConsumerState { style: ElevatedButton.styleFrom( backgroundColor: appColors.brandPrimary, foregroundColor: Colors.white, - disabledBackgroundColor: Colors.grey.shade400, + disabledBackgroundColor: appColors.textTertiary, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), diff --git a/lib/widgets/map/prefecture_tile_map.dart b/lib/widgets/map/prefecture_tile_map.dart index 8a54627..a4c8e78 100644 --- a/lib/widgets/map/prefecture_tile_map.dart +++ b/lib/widgets/map/prefecture_tile_map.dart @@ -76,7 +76,7 @@ class PrefectureTileMap extends ConsumerWidget { if (v.contains(prefName)) prefId = k; }); final regionId = JapanMapData.getRegionId(prefId); - final regionColor = regionColors[regionId] ?? Colors.grey; + final regionColor = regionColors[regionId] ?? appColors.divider; Color baseColor; Color textColor; diff --git a/lib/widgets/sake_detail/sake_detail_specs.dart b/lib/widgets/sake_detail/sake_detail_specs.dart index 5b0c9ff..fc69194 100644 --- a/lib/widgets/sake_detail/sake_detail_specs.dart +++ b/lib/widgets/sake_detail/sake_detail_specs.dart @@ -75,9 +75,9 @@ class _SakeDetailSpecsState extends State { if (_isEditing) { // Warn user about external update while editing ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('データが外部から更新されました。編集をキャンセルして再度お試しください。'), - backgroundColor: Colors.orange, + SnackBar( + content: const Text('データが外部から更新されました。編集をキャンセルして再度お試しください。'), + backgroundColor: Theme.of(context).extension()!.warning, ), ); _cancel(); // Force exit edit mode diff --git a/lib/widgets/settings/backup_settings_section.dart b/lib/widgets/settings/backup_settings_section.dart index c8c25bb..e19f079 100644 --- a/lib/widgets/settings/backup_settings_section.dart +++ b/lib/widgets/settings/backup_settings_section.dart @@ -86,6 +86,7 @@ enum _BackupState { idle, signingIn, signingOut, backingUp, restoring } Future _createBackup() async { final messenger = ScaffoldMessenger.of(context); + final appColors = Theme.of(context).extension()!; setState(() => _state = _BackupState.backingUp); final success = await _backupService.createBackup(); if (mounted) { @@ -93,11 +94,7 @@ enum _BackupState { idle, signingIn, signingOut, backingUp, restoring } messenger.showSnackBar( SnackBar( content: Text(success ? 'バックアップが完了しました' : 'バックアップに失敗しました'), - // Snackbars can keep Green/Red for semantic clarity, or be neutral. - // User asked to remove Green/Red icons from the UI, but feedback (Snackbar) usually stays semantic. - // However, to be safe and "Washi", let's use Sumi (Black) for success? - // Or just leave snackbars as they are ephemeral. The request was likely about the visible static UI. - backgroundColor: success ? Colors.green : Colors.red, + backgroundColor: success ? appColors.success : appColors.error, ), ); } @@ -184,7 +181,7 @@ enum _BackupState { idle, signingIn, signingOut, backingUp, restoring } messenger.showSnackBar( SnackBar( content: Text(success ? '復元が完了しました' : '復元に失敗しました'), - backgroundColor: success ? Colors.green : Colors.red, + backgroundColor: success ? appColors.success : appColors.error, ), ); }