Replace Colors.* in remaining files: intel_cards, quip_metadata, auth screens, admin screens, discover, search, profile, settings, utils, services, app_theme

This commit is contained in:
Patrick Britton 2026-02-10 15:38:23 -06:00
parent 248a32eb87
commit aa2b5d3447
19 changed files with 65 additions and 53 deletions

View file

@ -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<ModerationQueueScreen> {
.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),
),
),

View file

@ -157,7 +157,7 @@ class _QuipRepairScreenState extends ConsumerState<QuipRepairScreen> {
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(

View file

@ -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<CategorySelectScreen> {
width: 20,
child: CircularProgressIndicator(
strokeWidth: 2,
valueColor: AlwaysStoppedAnimation(Colors.white),
valueColor: AlwaysStoppedAnimation(SojornColors.basicWhite),
),
)
: const Text('Continue'),

View file

@ -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<ProfileSetupScreen> {
child: CircularProgressIndicator(
strokeWidth: 2,
valueColor:
AlwaysStoppedAnimation(Colors.white),
AlwaysStoppedAnimation(SojornColors.basicWhite),
),
)
: const Text('Begin Journey'),

View file

@ -255,7 +255,7 @@ class _SignInScreenState extends ConsumerState<SignInScreen> {
),
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<SignInScreen> {
),
boxShadow: [
BoxShadow(
color: Colors.black
.withOpacity(0.06),
color: const Color(0x0F000000),
blurRadius: 12,
offset: const Offset(0, 6),
),

View file

@ -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<SignUpScreen> {
width: 20,
child: CircularProgressIndicator(
strokeWidth: 2,
valueColor: AlwaysStoppedAnimation(Colors.white),
valueColor: AlwaysStoppedAnimation(SojornColors.basicWhite),
),
)
: const Text('Create Account'),

View file

@ -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,

View file

@ -298,7 +298,7 @@ class _DiscoverScreenState extends ConsumerState<DiscoverScreen> {
color: AppTheme.cardSurface,
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.05),
color: const Color(0x0D000000),
blurRadius: 10,
offset: const Offset(0, 2),
),

View file

@ -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()) {

View file

@ -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<CategoryDiscoveryScree
return Container(
margin: const EdgeInsets.only(bottom: 16),
decoration: BoxDecoration(
color: Colors.white,
color: SojornColors.basicWhite,
borderRadius: BorderRadius.circular(16),
border: Border.all(color: AppTheme.egyptianBlue.withOpacity(0.1)),
),

View file

@ -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 '../../widgets/media/signed_media_image.dart';
import 'viewable_profile_screen.dart';
@ -433,7 +434,7 @@ class _UserListItem extends StatelessWidget {
? user.displayName[0].toUpperCase()
: '?',
style: const TextStyle(
color: Colors.white,
color: SojornColors.basicWhite,
fontWeight: FontWeight.bold,
fontSize: 18,
),

View file

@ -8,6 +8,7 @@ import 'package:path_provider/path_provider.dart';
import '../../../providers/quip_upload_provider.dart';
import '../../../services/image_upload_service.dart';
import '../../../providers/api_provider.dart';
import '../../../theme/tokens.dart';
import '../../../providers/feed_refresh_provider.dart';
import '../../../theme/app_theme.dart';
@ -76,7 +77,7 @@ class _QuipMetadataScreenState extends ConsumerState<QuipMetadataScreen> {
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<QuipMetadataScreen> {
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<QuipMetadataScreen> {
_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))),
],
),
);

View file

@ -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),
),

View file

@ -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

View file

@ -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),
),
),
);

View file

@ -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) {

View file

@ -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),

View file

@ -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,
),
);
}

View file

@ -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'),
),