Replace inline Colors.* with SojornColors tokens in quip screens (video_item, preview, recorder, feed)

This commit is contained in:
Patrick Britton 2026-02-10 14:35:21 -06:00
parent 52dfa0c653
commit 7a53f41b97
4 changed files with 78 additions and 74 deletions

View file

@ -5,6 +5,7 @@ import 'quip_studio_screen.dart'; // Stage 3
import 'quip_metadata_screen.dart'; // Stage 4 import 'quip_metadata_screen.dart'; // Stage 4
import '../../../models/sojorn_media_result.dart'; import '../../../models/sojorn_media_result.dart';
import '../../../theme/app_theme.dart'; import '../../../theme/app_theme.dart';
import '../../../theme/tokens.dart';
class QuipPreviewScreen extends StatefulWidget { class QuipPreviewScreen extends StatefulWidget {
final File videoFile; final File videoFile;
@ -81,15 +82,15 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
showDialog( showDialog(
context: context, context: context,
builder: (context) => AlertDialog( builder: (context) => AlertDialog(
backgroundColor: Colors.black87, backgroundColor: const Color(0xDD000000),
content: TextField( content: TextField(
controller: textController, controller: textController,
autofocus: true, autofocus: true,
style: const TextStyle(color: Colors.white, fontSize: 24), style: const TextStyle(color: SojornColors.basicWhite, fontSize: 24),
decoration: const InputDecoration( decoration: const InputDecoration(
border: InputBorder.none, border: InputBorder.none,
hintText: 'Type here...', hintText: 'Type here...',
hintStyle: TextStyle(color: Colors.white54), hintStyle: TextStyle(color: SojornColors.basicWhite.withValues(alpha: 0.54)),
), ),
), ),
actions: [ actions: [
@ -102,7 +103,7 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
} }
Navigator.pop(context); Navigator.pop(context);
}, },
child: const Text('Done', style: TextStyle(color: Colors.white)), child: const Text('Done', style: TextStyle(color: SojornColors.basicWhite)),
) )
], ],
), ),
@ -121,11 +122,11 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (!_isInitialized) { if (!_isInitialized) {
return const Scaffold(backgroundColor: Colors.black, body: Center(child: CircularProgressIndicator())); return const Scaffold(backgroundColor: SojornColors.basicBlack, body: Center(child: CircularProgressIndicator()));
} }
return Scaffold( return Scaffold(
backgroundColor: Colors.black, backgroundColor: SojornColors.basicBlack,
body: Stack( body: Stack(
fit: StackFit.expand, fit: StackFit.expand,
children: [ children: [
@ -143,21 +144,21 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
top: item.position.dy, top: item.position.dy,
child: Draggable( child: Draggable(
feedback: Material( feedback: Material(
color: Colors.transparent, color: SojornColors.transparent,
child: Container( child: Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black.withOpacity(0.6), color: SojornColors.overlayDark,
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
border: Border.all(color: Colors.white24, width: 1), border: Border.all(color: SojornColors.basicWhite.withValues(alpha: 0.24), width: 1),
), ),
child: Text( child: Text(
item.text, item.text,
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontSize: 28, fontSize: 28,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
shadows: [Shadow(blurRadius: 4, color: Colors.black)], shadows: [Shadow(blurRadius: 4, color: SojornColors.basicBlack)],
), ),
), ),
), ),
@ -167,13 +168,13 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
child: Container( child: Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black.withOpacity(0.6), color: SojornColors.overlayDark,
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: Text( child: Text(
item.text, item.text,
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontSize: 28, fontSize: 28,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@ -199,16 +200,16 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
child: Container( child: Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black.withOpacity(0.6), color: SojornColors.overlayDark,
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: Text( child: Text(
item.text, item.text,
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontSize: 28, fontSize: 28,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
shadows: [Shadow(blurRadius: 4, color: Colors.black)], shadows: [Shadow(blurRadius: 4, color: SojornColors.basicBlack)],
), ),
), ),
), ),
@ -225,7 +226,7 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
child: Row( child: Row(
children: [ children: [
IconButton( IconButton(
icon: const Icon(Icons.arrow_back, color: Colors.white), icon: const Icon(Icons.arrow_back, color: SojornColors.basicWhite),
onPressed: () => Navigator.pop(context), onPressed: () => Navigator.pop(context),
), ),
], ],
@ -256,7 +257,7 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
child: FloatingActionButton( child: FloatingActionButton(
backgroundColor: AppTheme.brightNavy, backgroundColor: AppTheme.brightNavy,
onPressed: _next, onPressed: _next,
child: const Icon(Icons.arrow_forward, color: Colors.white), child: const Icon(Icons.arrow_forward, color: SojornColors.basicWhite),
), ),
), ),
], ],
@ -270,13 +271,13 @@ class _QuipPreviewScreenState extends State<QuipPreviewScreen> {
GestureDetector( GestureDetector(
onTap: onTap, onTap: onTap,
child: CircleAvatar( child: CircleAvatar(
backgroundColor: Colors.black54, backgroundColor: const Color(0x8A000000),
radius: 24, radius: 24,
child: Icon(icon, color: Colors.white, size: 28), child: Icon(icon, color: SojornColors.basicWhite, size: 28),
), ),
), ),
const SizedBox(height: 4), const SizedBox(height: 4),
Text(label, style: const TextStyle(color: Colors.white, fontSize: 12, shadows: [Shadow(blurRadius: 2, color: Colors.black)])), Text(label, style: const TextStyle(color: SojornColors.basicWhite, fontSize: 12, shadows: [Shadow(blurRadius: 2, color: SojornColors.basicBlack)])),
], ],
); );
} }

View file

@ -8,6 +8,7 @@ import 'package:image_picker/image_picker.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:sojorn/services/video_stitching_service.dart'; import 'package:sojorn/services/video_stitching_service.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
import '../../../theme/tokens.dart';
import '../../../theme/app_theme.dart'; import '../../../theme/app_theme.dart';
import 'quip_preview_screen.dart'; // Stage 2 import 'quip_preview_screen.dart'; // Stage 2
@ -239,7 +240,7 @@ class _QuipRecorderScreenState extends State<QuipRecorderScreen>
width: double.infinity, width: double.infinity,
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white24, color: SojornColors.basicWhite.withValues(alpha: 0.24),
borderRadius: BorderRadius.circular(3), borderRadius: BorderRadius.circular(3),
), ),
child: ClipRRect( child: ClipRRect(
@ -262,7 +263,7 @@ class _QuipRecorderScreenState extends State<QuipRecorderScreen>
flex: (percent * 1000).toInt(), flex: (percent * 1000).toInt(),
fit: FlexFit.loose, fit: FlexFit.loose,
child: Container( child: Container(
color: isActive ? Colors.redAccent : AppTheme.brightNavy, color: isActive ? SojornColors.destructive : AppTheme.brightNavy,
margin: const EdgeInsets.only(right: 2), margin: const EdgeInsets.only(right: 2),
), ),
); );
@ -271,17 +272,17 @@ class _QuipRecorderScreenState extends State<QuipRecorderScreen>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (_isInitializing || _cameraController == null) { if (_isInitializing || _cameraController == null) {
return const Scaffold(backgroundColor: Colors.black, body: Center(child: CircularProgressIndicator())); return const Scaffold(backgroundColor: SojornColors.basicBlack, body: Center(child: CircularProgressIndicator()));
} }
return Scaffold( return Scaffold(
backgroundColor: Colors.black, backgroundColor: SojornColors.basicBlack,
body: SafeArea( body: SafeArea(
child: Stack( child: Stack(
children: [ children: [
Positioned.fill(child: CameraPreview(_cameraController!)), Positioned.fill(child: CameraPreview(_cameraController!)),
if (_isProcessing) if (_isProcessing)
Container(color: Colors.black54, child: const Center(child: CircularProgressIndicator())), Container(color: const Color(0x8A000000), child: const Center(child: CircularProgressIndicator())),
Positioned( Positioned(
top: 0, left: 0, right: 0, top: 0, left: 0, right: 0,
@ -294,17 +295,17 @@ class _QuipRecorderScreenState extends State<QuipRecorderScreen>
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
IconButton( IconButton(
icon: const Icon(Icons.close, color: Colors.white), icon: const Icon(Icons.close, color: SojornColors.basicWhite),
onPressed: () => Navigator.pop(context), onPressed: () => Navigator.pop(context),
), ),
Row( Row(
children: [ children: [
IconButton( IconButton(
icon: Icon(_flashOn ? Icons.flash_on : Icons.flash_off, color: Colors.white), icon: Icon(_flashOn ? Icons.flash_on : Icons.flash_off, color: SojornColors.basicWhite),
onPressed: _toggleFlash, onPressed: _toggleFlash,
), ),
IconButton( IconButton(
icon: const Icon(Icons.flip_camera_ios, color: Colors.white), icon: const Icon(Icons.flip_camera_ios, color: SojornColors.basicWhite),
onPressed: _toggleCamera, onPressed: _toggleCamera,
), ),
], ],
@ -322,7 +323,7 @@ class _QuipRecorderScreenState extends State<QuipRecorderScreen>
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [ children: [
IconButton( IconButton(
icon: const Icon(Icons.photo_library_outlined, color: Colors.white, size: 28), icon: const Icon(Icons.photo_library_outlined, color: SojornColors.basicWhite, size: 28),
onPressed: _pickFromGallery, onPressed: _pickFromGallery,
), ),
@ -337,18 +338,18 @@ class _QuipRecorderScreenState extends State<QuipRecorderScreen>
height: _isRecording ? 90 : 80, height: _isRecording ? 90 : 80,
width: _isRecording ? 90 : 80, width: _isRecording ? 90 : 80,
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border.all(color: Colors.white, width: 4), border: Border.all(color: SojornColors.basicWhite, width: 4),
shape: BoxShape.circle, shape: BoxShape.circle,
color: Colors.transparent, color: SojornColors.transparent,
), ),
padding: const EdgeInsets.all(4), padding: const EdgeInsets.all(4),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: _isRecording ? Colors.redAccent : Colors.red, color: _isRecording ? SojornColors.destructive : SojornColors.destructive,
shape: BoxShape.circle, shape: BoxShape.circle,
), ),
child: _isRecording child: _isRecording
? const Center(child: Icon(Icons.stop, color: Colors.white)) ? const Center(child: Icon(Icons.stop, color: SojornColors.basicWhite))
: null, : null,
), ),
), ),
@ -358,14 +359,14 @@ class _QuipRecorderScreenState extends State<QuipRecorderScreen>
Row( Row(
children: [ children: [
IconButton( IconButton(
icon: const Icon(Icons.backspace, color: Colors.white), icon: const Icon(Icons.backspace, color: SojornColors.basicWhite),
onPressed: _deleteLastSegment, onPressed: _deleteLastSegment,
), ),
const SizedBox(width: 12), const SizedBox(width: 12),
FloatingActionButton.small( FloatingActionButton.small(
backgroundColor: AppTheme.brightNavy, backgroundColor: AppTheme.brightNavy,
onPressed: _finishAndNavigate, onPressed: _finishAndNavigate,
child: const Icon(Icons.check, color: Colors.white), child: const Icon(Icons.check, color: SojornColors.basicWhite),
), ),
], ],
) )

View file

@ -4,6 +4,7 @@ import '../../../widgets/media/signed_media_image.dart';
import '../../../widgets/video_player_with_comments.dart'; import '../../../widgets/video_player_with_comments.dart';
import '../../../models/post.dart'; import '../../../models/post.dart';
import '../../../models/profile.dart'; import '../../../models/profile.dart';
import '../../../theme/tokens.dart';
import 'quips_feed_screen.dart'; import 'quips_feed_screen.dart';
@ -61,7 +62,7 @@ class QuipVideoItem extends StatelessWidget {
if (initialized) { if (initialized) {
final size = controller!.value.size; final size = controller!.value.size;
return Container( return Container(
color: Colors.black, color: SojornColors.basicBlack,
child: Center( child: Center(
child: FittedBox( child: FittedBox(
fit: BoxFit.cover, fit: BoxFit.cover,
@ -79,19 +80,19 @@ class QuipVideoItem extends StatelessWidget {
return SignedMediaImage( return SignedMediaImage(
url: quip.thumbnailUrl, url: quip.thumbnailUrl,
fit: BoxFit.cover, fit: BoxFit.cover,
errorBuilder: (_, __, ___) => Container(color: Colors.black), errorBuilder: (_, __, ___) => Container(color: SojornColors.basicBlack),
loadingBuilder: (context) { loadingBuilder: (context) {
return Container( return Container(
color: Colors.black, color: SojornColors.basicBlack,
child: const Center( child: const Center(
child: CircularProgressIndicator(color: Colors.white), child: CircularProgressIndicator(color: SojornColors.basicWhite),
), ),
); );
}, },
); );
} }
return Container(color: Colors.black); return Container(color: SojornColors.basicBlack);
} }
Widget _buildActions() { Widget _buildActions() {
@ -100,7 +101,7 @@ class QuipVideoItem extends StatelessWidget {
icon: isLiked ? Icons.favorite : Icons.favorite_border, icon: isLiked ? Icons.favorite : Icons.favorite_border,
label: likeCount > 0 ? likeCount.toString() : '', label: likeCount > 0 ? likeCount.toString() : '',
onTap: onLike, onTap: onLike,
color: isLiked ? Colors.redAccent : Colors.white, color: isLiked ? SojornColors.destructive : SojornColors.basicWhite,
), ),
_QuipAction( _QuipAction(
icon: Icons.chat_bubble_outline, icon: Icons.chat_bubble_outline,
@ -138,12 +139,12 @@ class QuipVideoItem extends StatelessWidget {
Text( Text(
'@${quip.username}', '@${quip.username}',
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
fontSize: 16, fontSize: 16,
shadows: [ shadows: [
Shadow( Shadow(
color: Colors.black54, color: const Color(0x8A000000),
offset: Offset(0, 1), offset: Offset(0, 1),
blurRadius: 6, blurRadius: 6,
), ),
@ -156,11 +157,11 @@ class QuipVideoItem extends StatelessWidget {
maxLines: 2, maxLines: 2,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontSize: 14, fontSize: 14,
shadows: [ shadows: [
Shadow( Shadow(
color: Colors.black54, color: const Color(0x8A000000),
offset: Offset(0, 1), offset: Offset(0, 1),
blurRadius: 6, blurRadius: 6,
), ),
@ -170,16 +171,16 @@ class QuipVideoItem extends StatelessWidget {
const SizedBox(height: 10), const SizedBox(height: 10),
Row( Row(
children: const [ children: const [
Icon(Icons.music_note, color: Colors.white, size: 18), Icon(Icons.music_note, color: SojornColors.basicWhite, size: 18),
SizedBox(width: 6), SizedBox(width: 6),
Text( Text(
'Original Audio', 'Original Audio',
style: TextStyle( style: TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
shadows: [ shadows: [
Shadow( Shadow(
color: Colors.black45, color: const Color(0x73000000),
offset: Offset(0, 1), offset: Offset(0, 1),
blurRadius: 6, blurRadius: 6,
), ),
@ -200,12 +201,12 @@ class QuipVideoItem extends StatelessWidget {
child: Container( child: Container(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black.withOpacity(0.6), color: SojornColors.overlayDark,
shape: BoxShape.circle, shape: BoxShape.circle,
), ),
child: const Icon( child: const Icon(
Icons.play_arrow, Icons.play_arrow,
color: Colors.white, color: SojornColors.basicWhite,
size: 48, size: 48,
), ),
), ),
@ -217,7 +218,7 @@ class QuipVideoItem extends StatelessWidget {
return GestureDetector( return GestureDetector(
onTap: onTogglePause, onTap: onTogglePause,
child: Container( child: Container(
color: Colors.black, color: SojornColors.basicBlack,
child: Stack( child: Stack(
fit: StackFit.expand, fit: StackFit.expand,
children: [ children: [
@ -232,9 +233,9 @@ class QuipVideoItem extends StatelessWidget {
begin: Alignment.bottomCenter, begin: Alignment.bottomCenter,
end: Alignment.topCenter, end: Alignment.topCenter,
colors: [ colors: [
Colors.black54, const Color(0x8A000000),
Colors.transparent, SojornColors.transparent,
Colors.black45, const Color(0x73000000),
], ],
stops: [0, 0.4, 1], stops: [0, 0.4, 1],
), ),
@ -255,11 +256,11 @@ class QuipVideoItem extends StatelessWidget {
padding: padding:
const EdgeInsets.symmetric(horizontal: 10, vertical: 6), const EdgeInsets.symmetric(horizontal: 10, vertical: 6),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black45, color: const Color(0x73000000),
borderRadius: BorderRadius.circular(24), borderRadius: BorderRadius.circular(24),
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colors.black.withAlpha(102), color: const Color(0x66000000),
blurRadius: 6, blurRadius: 6,
offset: const Offset(0, 2), offset: const Offset(0, 2),
), ),
@ -268,7 +269,7 @@ class QuipVideoItem extends StatelessWidget {
child: const Text( child: const Text(
'Quips', 'Quips',
style: TextStyle( style: TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
@ -281,13 +282,13 @@ class QuipVideoItem extends StatelessWidget {
vertical: 6, vertical: 6,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black45, color: const Color(0x73000000),
borderRadius: BorderRadius.circular(24), borderRadius: BorderRadius.circular(24),
), ),
child: Text( child: Text(
'${(quip.durationMs! / 1000).toStringAsFixed(1)}s', '${(quip.durationMs! / 1000).toStringAsFixed(1)}s',
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontSize: 12, fontSize: 12,
), ),
), ),
@ -298,7 +299,7 @@ class QuipVideoItem extends StatelessWidget {
_buildPauseOverlay(), _buildPauseOverlay(),
if (!(controller?.value.isInitialized ?? false)) if (!(controller?.value.isInitialized ?? false))
Center( Center(
child: const CircularProgressIndicator(color: Colors.white), child: const CircularProgressIndicator(color: SojornColors.basicWhite),
), ),
], ],
), ),
@ -329,7 +330,7 @@ class _QuipAction extends StatelessWidget {
required this.icon, required this.icon,
required this.onTap, required this.onTap,
this.label, this.label,
this.color = Colors.white, this.color = SojornColors.basicWhite,
}); });
@override @override
@ -338,11 +339,11 @@ class _QuipAction extends StatelessWidget {
children: [ children: [
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.black54, color: const Color(0x8A000000),
shape: BoxShape.circle, shape: BoxShape.circle,
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colors.black.withAlpha(102), color: const Color(0x66000000),
blurRadius: 8, blurRadius: 8,
offset: const Offset(0, 2), offset: const Offset(0, 2),
), ),
@ -358,12 +359,12 @@ class _QuipAction extends StatelessWidget {
Text( Text(
label!, label!,
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: SojornColors.basicWhite,
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
shadows: [ shadows: [
Shadow( Shadow(
color: Colors.black54, color: const Color(0x8A000000),
blurRadius: 4, blurRadius: 4,
offset: Offset(0, 1), offset: Offset(0, 1),
), ),

View file

@ -8,6 +8,7 @@ import '../../../providers/api_provider.dart';
import '../../../providers/feed_refresh_provider.dart'; import '../../../providers/feed_refresh_provider.dart';
import '../../../routes/app_routes.dart'; import '../../../routes/app_routes.dart';
import '../../../theme/app_theme.dart'; import '../../../theme/app_theme.dart';
import '../../../theme/tokens.dart';
import '../../post/post_detail_screen.dart'; import '../../post/post_detail_screen.dart';
import 'quip_video_item.dart'; import 'quip_video_item.dart';
import '../../home/home_shell.dart'; import '../../home/home_shell.dart';
@ -446,7 +447,7 @@ class _QuipsFeedScreenState extends ConsumerState<QuipsFeedScreen>
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
isScrollControlled: true, isScrollControlled: true,
backgroundColor: Colors.transparent, backgroundColor: SojornColors.transparent,
builder: (context) => VideoCommentsSheet( builder: (context) => VideoCommentsSheet(
postId: quip.id, postId: quip.id,
initialCommentCount: 0, initialCommentCount: 0,
@ -469,14 +470,14 @@ class _QuipsFeedScreenState extends ConsumerState<QuipsFeedScreen>
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (_error != null) { if (_error != null) {
return Scaffold( return Scaffold(
backgroundColor: Colors.black, backgroundColor: SojornColors.basicBlack,
body: Center( body: Center(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(
_error!, _error!,
style: const TextStyle(color: Colors.white), style: const TextStyle(color: SojornColors.basicWhite),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
@ -492,27 +493,27 @@ class _QuipsFeedScreenState extends ConsumerState<QuipsFeedScreen>
if (_quips.isEmpty && _isLoading) { if (_quips.isEmpty && _isLoading) {
return const Scaffold( return const Scaffold(
backgroundColor: Colors.black, backgroundColor: SojornColors.basicBlack,
body: Center( body: Center(
child: CircularProgressIndicator(color: Colors.white), child: CircularProgressIndicator(color: SojornColors.basicWhite),
), ),
); );
} }
if (_quips.isEmpty) { if (_quips.isEmpty) {
return const Scaffold( return const Scaffold(
backgroundColor: Colors.black, backgroundColor: SojornColors.basicBlack,
body: Center( body: Center(
child: Text( child: Text(
'No quips yet. Be the first!', 'No quips yet. Be the first!',
style: TextStyle(color: Colors.white70), style: TextStyle(color: SojornColors.basicWhite),
), ),
), ),
); );
} }
return Scaffold( return Scaffold(
backgroundColor: Colors.black, backgroundColor: SojornColors.basicBlack,
body: Stack( body: Stack(
children: [ children: [
RefreshIndicator( RefreshIndicator(