From aa2b5d3447b5641ef8a6d17b936ae3f31e01289c Mon Sep 17 00:00:00 2001 From: Patrick Britton Date: Tue, 10 Feb 2026 15:38:23 -0600 Subject: [PATCH] Replace Colors.* in remaining files: intel_cards, quip_metadata, auth screens, admin screens, discover, search, profile, settings, utils, services, app_theme --- .../admin/moderation_queue_screen.dart | 5 +- .../lib/screens/admin/quip_repair_screen.dart | 2 +- .../screens/auth/category_select_screen.dart | 3 +- .../screens/auth/profile_setup_screen.dart | 3 +- .../lib/screens/auth/sign_in_screen.dart | 5 +- .../lib/screens/auth/sign_up_screen.dart | 3 +- .../screens/beacon/widgets/intel_cards.dart | 48 +++++++++---------- .../lib/screens/discover/discover_screen.dart | 2 +- .../lib/screens/home/full_screen_shell.dart | 3 +- .../profile/category_settings_screen.dart | 3 +- .../lib/screens/profile/following_screen.dart | 3 +- .../quips/create/quip_metadata_screen.dart | 7 +-- .../lib/screens/search/search_screen.dart | 3 +- .../settings/privacy_settings_screen.dart | 5 +- .../lib/services/feed_navigation_service.dart | 7 +-- .../lib/services/notification_service.dart | 2 +- sojorn_app/lib/theme/app_theme.dart | 2 +- .../lib/utils/external_link_controller.dart | 5 +- sojorn_app/lib/utils/url_launcher_helper.dart | 7 +-- 19 files changed, 65 insertions(+), 53 deletions(-) diff --git a/sojorn_app/lib/screens/admin/moderation_queue_screen.dart b/sojorn_app/lib/screens/admin/moderation_queue_screen.dart index 00ce55e..17d5a15 100644 --- a/sojorn_app/lib/screens/admin/moderation_queue_screen.dart +++ b/sojorn_app/lib/screens/admin/moderation_queue_screen.dart @@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart'; import 'package:timeago/timeago.dart' as timeago; import '../../widgets/media/signed_media_image.dart'; import '../../providers/api_provider.dart'; +import '../../theme/tokens.dart'; class ModerationQueueScreen extends ConsumerStatefulWidget { const ModerationQueueScreen({super.key}); @@ -231,7 +232,7 @@ class _ModerationQueueScreenState extends ConsumerState { .colorScheme .error, foregroundColor: - Colors.white, + SojornColors.basicWhite, ), onPressed: () => _confirmBan(item), @@ -280,7 +281,7 @@ class _PostPreview extends StatelessWidget { errorBuilder: (_, __, ___) => Container( width: 56, height: 56, - color: Colors.black26, + color: const Color(0x42000000), child: const Icon(Icons.broken_image), ), ), diff --git a/sojorn_app/lib/screens/admin/quip_repair_screen.dart b/sojorn_app/lib/screens/admin/quip_repair_screen.dart index 3fdf548..4dd93f6 100644 --- a/sojorn_app/lib/screens/admin/quip_repair_screen.dart +++ b/sojorn_app/lib/screens/admin/quip_repair_screen.dart @@ -157,7 +157,7 @@ class _QuipRepairScreenState extends ConsumerState { Container( padding: const EdgeInsets.all(8), width: double.infinity, - color: Colors.amber.withOpacity(0.2), + color: const Color(0xFFFFC107).withValues(alpha: 0.2), child: Text(_statusMessage!, textAlign: TextAlign.center), ), Expanded( diff --git a/sojorn_app/lib/screens/auth/category_select_screen.dart b/sojorn_app/lib/screens/auth/category_select_screen.dart index ad4d740..e498326 100644 --- a/sojorn_app/lib/screens/auth/category_select_screen.dart +++ b/sojorn_app/lib/screens/auth/category_select_screen.dart @@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart'; import '../../models/category.dart'; import '../../providers/api_provider.dart'; import '../../theme/app_theme.dart'; +import '../../theme/tokens.dart'; import '../../routes/app_routes.dart'; import '../../providers/onboarding_provider.dart'; @@ -181,7 +182,7 @@ class _CategorySelectScreenState extends ConsumerState { width: 20, child: CircularProgressIndicator( strokeWidth: 2, - valueColor: AlwaysStoppedAnimation(Colors.white), + valueColor: AlwaysStoppedAnimation(SojornColors.basicWhite), ), ) : const Text('Continue'), diff --git a/sojorn_app/lib/screens/auth/profile_setup_screen.dart b/sojorn_app/lib/screens/auth/profile_setup_screen.dart index fe8a750..cf61121 100644 --- a/sojorn_app/lib/screens/auth/profile_setup_screen.dart +++ b/sojorn_app/lib/screens/auth/profile_setup_screen.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../providers/api_provider.dart'; import '../../theme/app_theme.dart'; +import '../../theme/tokens.dart'; import 'category_select_screen.dart'; class ProfileSetupScreen extends ConsumerStatefulWidget { @@ -203,7 +204,7 @@ class _ProfileSetupScreenState extends ConsumerState { child: CircularProgressIndicator( strokeWidth: 2, valueColor: - AlwaysStoppedAnimation(Colors.white), + AlwaysStoppedAnimation(SojornColors.basicWhite), ), ) : const Text('Begin Journey'), diff --git a/sojorn_app/lib/screens/auth/sign_in_screen.dart b/sojorn_app/lib/screens/auth/sign_in_screen.dart index bdaa77d..c3014dc 100644 --- a/sojorn_app/lib/screens/auth/sign_in_screen.dart +++ b/sojorn_app/lib/screens/auth/sign_in_screen.dart @@ -255,7 +255,7 @@ class _SignInScreenState extends ConsumerState { ), boxShadow: [ BoxShadow( - color: Colors.black.withOpacity(0.06), + color: const Color(0x0F000000), blurRadius: 24, offset: const Offset(0, 16), ), @@ -499,8 +499,7 @@ class _SignInScreenState extends ConsumerState { ), boxShadow: [ BoxShadow( - color: Colors.black - .withOpacity(0.06), + color: const Color(0x0F000000), blurRadius: 12, offset: const Offset(0, 6), ), diff --git a/sojorn_app/lib/screens/auth/sign_up_screen.dart b/sojorn_app/lib/screens/auth/sign_up_screen.dart index 7bf7338..7540b17 100644 --- a/sojorn_app/lib/screens/auth/sign_up_screen.dart +++ b/sojorn_app/lib/screens/auth/sign_up_screen.dart @@ -5,6 +5,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:url_launcher/url_launcher.dart'; import '../../providers/auth_provider.dart'; import '../../theme/app_theme.dart'; +import '../../theme/tokens.dart'; import '../../widgets/auth/turnstile_widget.dart'; class SignUpScreen extends ConsumerStatefulWidget { @@ -545,7 +546,7 @@ class _SignUpScreenState extends ConsumerState { width: 20, child: CircularProgressIndicator( strokeWidth: 2, - valueColor: AlwaysStoppedAnimation(Colors.white), + valueColor: AlwaysStoppedAnimation(SojornColors.basicWhite), ), ) : const Text('Create Account'), diff --git a/sojorn_app/lib/screens/beacon/widgets/intel_cards.dart b/sojorn_app/lib/screens/beacon/widgets/intel_cards.dart index 98d1316..925c952 100644 --- a/sojorn_app/lib/screens/beacon/widgets/intel_cards.dart +++ b/sojorn_app/lib/screens/beacon/widgets/intel_cards.dart @@ -226,11 +226,11 @@ class ConditionsCard extends StatelessWidget { } Color _getUvColor(double uv) { - if (uv < 3) return Colors.green; - if (uv < 6) return Colors.orange; - if (uv < 8) return Colors.deepOrange; - if (uv < 11) return Colors.red; - return Colors.purple; + if (uv < 3) return const Color(0xFF4CAF50); + if (uv < 6) return const Color(0xFFFF9800); + if (uv < 8) return const Color(0xFFFF5722); + if (uv < 11) return const Color(0xFFF44336); + return const Color(0xFF9C27B0); } String _getUvLevel(double uv) { @@ -258,7 +258,7 @@ class HazardsCard extends StatelessWidget { return IntelCard( title: 'Hazards', icon: Icons.warning_amber_rounded, - iconColor: Colors.orange, + iconColor: const Color(0xFFFF9800), isLoading: isLoading, child: hazards == null ? _buildNoData(context) @@ -347,19 +347,19 @@ class HazardsCard extends StatelessWidget { } Color _getAqiColor(int aqi) { - if (aqi <= 50) return Colors.green; - if (aqi <= 100) return Colors.yellow.shade700; - if (aqi <= 150) return Colors.orange; - if (aqi <= 200) return Colors.red; - if (aqi <= 300) return Colors.purple; - return Colors.brown; + if (aqi <= 50) return const Color(0xFF4CAF50); + if (aqi <= 100) return const Color(0xFFF9A825); + if (aqi <= 150) return const Color(0xFFFF9800); + if (aqi <= 200) return const Color(0xFFF44336); + if (aqi <= 300) return const Color(0xFF9C27B0); + return const Color(0xFF795548); } Color _getPollenColor(int level) { - if (level < 10) return Colors.green; - if (level < 50) return Colors.yellow.shade700; - if (level < 100) return Colors.orange; - return Colors.red; + if (level < 10) return const Color(0xFF4CAF50); + if (level < 50) return const Color(0xFFF9A825); + if (level < 100) return const Color(0xFFFF9800); + return const Color(0xFFF44336); } } @@ -412,7 +412,7 @@ class VisibilityCard extends StatelessWidget { Icon( Icons.wb_sunny_outlined, size: 14, - color: Colors.orange, + color: const Color(0xFFFF9800), ), const SizedBox(width: 4), Text( @@ -441,7 +441,7 @@ class VisibilityCard extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: (isDaytime ? Colors.orange : AppTheme.ksuPurple) + color: (isDaytime ? const Color(0xFFFF9800) : AppTheme.ksuPurple) .withValues(alpha: 0.1), borderRadius: BorderRadius.circular(6), ), @@ -451,13 +451,13 @@ class VisibilityCard extends StatelessWidget { Icon( isDaytime ? Icons.wb_twilight : Icons.sunny, size: 14, - color: isDaytime ? Colors.orange : AppTheme.ksuPurple, + color: isDaytime ? const Color(0xFFFF9800) : AppTheme.ksuPurple, ), const SizedBox(width: 4), Text( '${isDaytime ? 'Sunset' : 'Sunrise'} in $transitionText', style: Theme.of(context).textTheme.labelSmall?.copyWith( - color: isDaytime ? Colors.orange : AppTheme.ksuPurple, + color: isDaytime ? const Color(0xFFFF9800) : AppTheme.ksuPurple, fontWeight: FontWeight.w600, ), ), @@ -547,7 +547,7 @@ class ResourcesCard extends StatelessWidget { return IntelCard( title: 'Resources', icon: Icons.place_outlined, - iconColor: Colors.teal, + iconColor: const Color(0xFF009688), isLoading: isLoading, onTap: onTap, child: Column( @@ -569,11 +569,11 @@ class ResourcesCard extends StatelessWidget { const Spacer(), Row( children: [ - _buildResourceIcon(Icons.local_library, Colors.blue), + _buildResourceIcon(Icons.local_library, const Color(0xFF2196F3)), const SizedBox(width: 6), - _buildResourceIcon(Icons.park, Colors.green), + _buildResourceIcon(Icons.park, const Color(0xFF4CAF50)), const SizedBox(width: 6), - _buildResourceIcon(Icons.local_hospital, Colors.red), + _buildResourceIcon(Icons.local_hospital, const Color(0xFFF44336)), const Spacer(), Icon( Icons.arrow_forward_ios, diff --git a/sojorn_app/lib/screens/discover/discover_screen.dart b/sojorn_app/lib/screens/discover/discover_screen.dart index b7a4ae5..40b7d2e 100644 --- a/sojorn_app/lib/screens/discover/discover_screen.dart +++ b/sojorn_app/lib/screens/discover/discover_screen.dart @@ -298,7 +298,7 @@ class _DiscoverScreenState extends ConsumerState { color: AppTheme.cardSurface, boxShadow: [ BoxShadow( - color: Colors.black.withOpacity(0.05), + color: const Color(0x0D000000), blurRadius: 10, offset: const Offset(0, 2), ), diff --git a/sojorn_app/lib/screens/home/full_screen_shell.dart b/sojorn_app/lib/screens/home/full_screen_shell.dart index 8c6e794..aa4e254 100644 --- a/sojorn_app/lib/screens/home/full_screen_shell.dart +++ b/sojorn_app/lib/screens/home/full_screen_shell.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:go_router/go_router.dart'; import '../../theme/app_theme.dart'; +import '../../theme/tokens.dart'; import '../../routes/app_routes.dart'; import '../../providers/notification_provider.dart'; import '../discover/discover_screen.dart'; @@ -71,7 +72,7 @@ class FullScreenShell extends ConsumerWidget { return AppBar( backgroundColor: AppTheme.scaffoldBg, elevation: 0, - surfaceTintColor: Colors.transparent, + surfaceTintColor: SojornColors.transparent, leading: IconButton( onPressed: () { if (Navigator.of(context).canPop()) { diff --git a/sojorn_app/lib/screens/profile/category_settings_screen.dart b/sojorn_app/lib/screens/profile/category_settings_screen.dart index ba8b04b..492fc1c 100644 --- a/sojorn_app/lib/screens/profile/category_settings_screen.dart +++ b/sojorn_app/lib/screens/profile/category_settings_screen.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../models/category.dart'; import '../../providers/api_provider.dart'; import '../../theme/app_theme.dart'; +import '../../theme/tokens.dart'; import '../../widgets/app_scaffold.dart'; class CategoryDiscoveryScreen extends ConsumerStatefulWidget { @@ -78,7 +79,7 @@ class _CategoryDiscoveryScreenState extends ConsumerState { backgroundColor: AppTheme.cardSurface, elevation: 0, leading: IconButton( - icon: const Icon(Icons.arrow_back, color: Colors.black), + icon: const Icon(Icons.arrow_back, color: SojornColors.basicBlack), onPressed: () => Navigator.pop(context), ), actions: [ @@ -114,7 +115,7 @@ class _QuipMetadataScreenState extends ConsumerState { AspectRatio( aspectRatio: 16/9, // Widescreen preview for cover selection child: Container( - color: Colors.black, + color: SojornColors.basicBlack, child: Center( child: AspectRatio( aspectRatio: _controller.value.aspectRatio, @@ -136,7 +137,7 @@ class _QuipMetadataScreenState extends ConsumerState { _controller.seekTo(Duration(milliseconds: value.toInt())); }, ), - const Center(child: Text("Scrub to choose a thumbnail frame", style: TextStyle(color: Colors.grey, fontSize: 12))), + Center(child: Text("Scrub to choose a thumbnail frame", style: TextStyle(color: AppTheme.textDisabled, fontSize: 12))), ], ), ); diff --git a/sojorn_app/lib/screens/search/search_screen.dart b/sojorn_app/lib/screens/search/search_screen.dart index d272443..345f114 100644 --- a/sojorn_app/lib/screens/search/search_screen.dart +++ b/sojorn_app/lib/screens/search/search_screen.dart @@ -7,6 +7,7 @@ import '../../providers/api_provider.dart'; import '../../models/search_results.dart'; import '../../models/post.dart'; import '../../theme/app_theme.dart'; +import '../../theme/tokens.dart'; import '../../widgets/sojorn_post_card.dart'; import '../../widgets/media/signed_media_image.dart'; import '../profile/viewable_profile_screen.dart'; @@ -661,7 +662,7 @@ class UserResultItem extends StatelessWidget { ? user.displayName[0].toUpperCase() : '?', style: const TextStyle( - color: Colors.white, + color: SojornColors.basicWhite, fontWeight: FontWeight.bold, fontSize: 22), ), diff --git a/sojorn_app/lib/screens/settings/privacy_settings_screen.dart b/sojorn_app/lib/screens/settings/privacy_settings_screen.dart index 1a42ee4..208d01c 100644 --- a/sojorn_app/lib/screens/settings/privacy_settings_screen.dart +++ b/sojorn_app/lib/screens/settings/privacy_settings_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../theme/app_theme.dart'; +import '../../theme/tokens.dart'; import '../../widgets/app_scaffold.dart'; import '../../providers/api_provider.dart'; import '../../models/profile_privacy_settings.dart'; @@ -78,7 +79,7 @@ class _PrivacySettingsScreenState ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Privacy settings saved'), - backgroundColor: Colors.green, + backgroundColor: const Color(0xFF4CAF50), ), ); Navigator.of(context).pop(_settings); @@ -143,7 +144,7 @@ class _PrivacySettingsScreenState height: 20, child: CircularProgressIndicator(strokeWidth: 2), ) - : const Text('Save', style: TextStyle(color: Colors.white)), + : const Text('Save', style: TextStyle(color: SojornColors.basicWhite)), ), ], body: _isLoading diff --git a/sojorn_app/lib/services/feed_navigation_service.dart b/sojorn_app/lib/services/feed_navigation_service.dart index 4bab1db..b344dc5 100644 --- a/sojorn_app/lib/services/feed_navigation_service.dart +++ b/sojorn_app/lib/services/feed_navigation_service.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import '../models/post.dart'; +import '../theme/tokens.dart'; import '../screens/post/threaded_conversation_screen.dart'; /// Navigation service for opening different feeds based on post type @@ -42,15 +43,15 @@ class QuipsFeedScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Colors.black, + backgroundColor: SojornColors.basicBlack, appBar: AppBar( - backgroundColor: Colors.black, + backgroundColor: SojornColors.basicBlack, title: const Text('Quips'), ), body: Center( child: Text( 'Quips Feed\n(Initial Post: $initialPostId)', - style: const TextStyle(color: Colors.white), + style: const TextStyle(color: SojornColors.basicWhite), ), ), ); diff --git a/sojorn_app/lib/services/notification_service.dart b/sojorn_app/lib/services/notification_service.dart index 7fb2d01..415eafa 100644 --- a/sojorn_app/lib/services/notification_service.dart +++ b/sojorn_app/lib/services/notification_service.dart @@ -693,7 +693,7 @@ class _NotificationBannerState extends State<_NotificationBanner> child: Material( elevation: 8, borderRadius: BorderRadius.circular(16), - color: Colors.transparent, + color: const Color(0x00000000), child: GestureDetector( onTap: widget.onTap, onHorizontalDragEnd: (details) { diff --git a/sojorn_app/lib/theme/app_theme.dart b/sojorn_app/lib/theme/app_theme.dart index 3f0bba3..3af5b52 100644 --- a/sojorn_app/lib/theme/app_theme.dart +++ b/sojorn_app/lib/theme/app_theme.dart @@ -223,7 +223,7 @@ class AppTheme { ) { return AppBarTheme( backgroundColor: brand.cardSurface, - surfaceTintColor: Colors.transparent, + surfaceTintColor: const Color(0x00000000), elevation: 0, centerTitle: false, iconTheme: IconThemeData(color: brand.navyBlue), diff --git a/sojorn_app/lib/utils/external_link_controller.dart b/sojorn_app/lib/utils/external_link_controller.dart index 7cccb59..6aa1741 100644 --- a/sojorn_app/lib/utils/external_link_controller.dart +++ b/sojorn_app/lib/utils/external_link_controller.dart @@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; import '../services/api_service.dart'; +import '../theme/tokens.dart'; import '../widgets/safety_redirect_sheet.dart'; /// External Link Traffic Controller @@ -102,7 +103,7 @@ class ExternalLinkController { static void _showSafetyRedirectSheet(BuildContext context, Uri uri) { showModalBottomSheet( context: context, - backgroundColor: Colors.transparent, + backgroundColor: SojornColors.transparent, builder: (context) => SafetyRedirectSheet( url: uri.toString(), domain: uri.host, @@ -116,7 +117,7 @@ class ExternalLinkController { messenger.showSnackBar( SnackBar( content: Text(message), - backgroundColor: Colors.red.shade700, + backgroundColor: SojornColors.destructive, ), ); } diff --git a/sojorn_app/lib/utils/url_launcher_helper.dart b/sojorn_app/lib/utils/url_launcher_helper.dart index 9f35502..70b3801 100644 --- a/sojorn_app/lib/utils/url_launcher_helper.dart +++ b/sojorn_app/lib/utils/url_launcher_helper.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; import '../theme/app_theme.dart'; +import '../theme/tokens.dart'; import 'external_link_controller.dart'; /// Helper class for safely launching URLs with user warnings for unknown sites. @@ -84,7 +85,7 @@ class UrlLauncherHelper { children: [ Icon( Icons.warning_amber, - color: Colors.orange, + color: SojornColors.nsfwWarningIcon, size: 20, ), const SizedBox(width: 8), @@ -93,7 +94,7 @@ class UrlLauncherHelper { 'This site is not recognized as a known safe website. Proceed with caution.', style: TextStyle( fontSize: 13, - color: Colors.orange, + color: SojornColors.nsfwWarningIcon, ), ), ), @@ -115,7 +116,7 @@ class UrlLauncherHelper { ElevatedButton( onPressed: () => Navigator.of(context).pop(true), style: ElevatedButton.styleFrom( - backgroundColor: isSafe ? AppTheme.royalPurple : Colors.orange, + backgroundColor: isSafe ? AppTheme.royalPurple : SojornColors.nsfwWarningIcon, ), child: const Text('Continue'), ),