This commit is contained in:
Forrest 2026-08-05 21:57:06 -04:00
parent 2ce32cac4e
commit b6639fb1c9
26 changed files with 454 additions and 204 deletions

View file

@ -69,8 +69,8 @@ class HomeScreen extends ConsumerWidget {
),
if (recentAlbums.isEmpty && client == null)
const Padding(
padding: EdgeInsets.only(top: TimbreSpacing.xl),
Padding(
padding: const EdgeInsets.only(top: TimbreSpacing.xl),
child: Text(
'Connect to a server and start listening — your home fills in as you play.',
style: TextStyle(color: TimbreColors.dimmed),
@ -116,11 +116,11 @@ class _HeroCard extends ConsumerWidget {
return _HeroShell(
accent: accent,
onTap: () => ref.read(selectedTabProvider.notifier).state = 1,
child: const Row(
child: Row(
children: [
Icon(Icons.library_music_outlined,
color: TimbreColors.dimmed, size: 40),
SizedBox(width: TimbreSpacing.lg),
const SizedBox(width: TimbreSpacing.lg),
Expanded(
child: Text('Browse your library to start listening',
style: TextStyle(color: TimbreColors.foreground)),
@ -152,9 +152,9 @@ class _HeroCard extends ConsumerWidget {
key: ValueKey(artUri),
fit: BoxFit.cover,
gaplessPlayback: true,
errorBuilder: (_, _, _) => const Icon(
errorBuilder: (_, _, _) => Icon(
Icons.album_outlined, color: TimbreColors.dimmed))
: const Icon(Icons.album_outlined,
: Icon(Icons.album_outlined,
color: TimbreColors.dimmed),
),
),
@ -181,14 +181,14 @@ class _HeroCard extends ConsumerWidget {
Text(title,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
style: TextStyle(
color: TimbreColors.foreground,
fontWeight: FontWeight.w700)),
if (subtitle != null)
Text(subtitle,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(color: TimbreColors.dimmed)),
style: TextStyle(color: TimbreColors.dimmed)),
if (hasCurrent) ...[
const SizedBox(height: TimbreSpacing.md),
const _HeroProgress(),
@ -283,7 +283,7 @@ class _ShelfHeader extends StatelessWidget {
return Row(
children: [
Text(title,
style: const TextStyle(
style: TextStyle(
color: TimbreColors.foreground,
fontWeight: FontWeight.w700,
letterSpacing: 0.5)),
@ -292,7 +292,7 @@ class _ShelfHeader extends StatelessWidget {
InkWell(
onTap: onShuffle,
customBorder: const CircleBorder(),
child: const SizedBox(
child: SizedBox(
width: TimbreSpacing.minTouchTarget,
height: 28,
child: Icon(Icons.shuffle, size: 18, color: TimbreColors.dimmed),
@ -412,9 +412,9 @@ class _RandomBody extends StatelessWidget {
key: ValueKey(artUri),
fit: BoxFit.cover,
gaplessPlayback: true,
errorBuilder: (_, _, _) => const Icon(
errorBuilder: (_, _, _) => Icon(
Icons.album_outlined, color: TimbreColors.dimmed))
: const Icon(Icons.album_outlined, color: TimbreColors.dimmed),
: Icon(Icons.album_outlined, color: TimbreColors.dimmed),
),
),
),
@ -427,7 +427,7 @@ class _RandomBody extends StatelessWidget {
Text(album.name ?? 'Unknown album',
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
style: TextStyle(
color: TimbreColors.foreground,
fontWeight: FontWeight.w700)),
const SizedBox(height: TimbreSpacing.xs),
@ -435,16 +435,16 @@ class _RandomBody extends StatelessWidget {
Text(album.artist!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(color: TimbreColors.dimmed)),
style: TextStyle(color: TimbreColors.dimmed)),
if (album.year != null)
Text('${album.year}',
style: const TextStyle(
style: TextStyle(
color: TimbreColors.dimmed, fontSize: 12)),
if (album.genre != null)
Text(album.genre!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
style: TextStyle(
color: TimbreColors.dimmed, fontSize: 12)),
],
),
@ -461,7 +461,7 @@ class _RandomSkeleton extends StatelessWidget {
Widget build(BuildContext context) {
return ClipRRect(
borderRadius: BorderRadius.circular(4),
child: const SizedBox(
child: SizedBox(
width: _RandomAlbum._size,
height: _RandomAlbum._size,
child: ColoredBox(color: TimbreColors.surface),
@ -507,9 +507,9 @@ class _ArtCard extends StatelessWidget {
key: ValueKey(artUri),
fit: BoxFit.cover,
gaplessPlayback: true,
errorBuilder: (_, _, _) => const Icon(
errorBuilder: (_, _, _) => Icon(
Icons.album_outlined, color: TimbreColors.dimmed))
: const Icon(Icons.album_outlined,
: Icon(Icons.album_outlined,
color: TimbreColors.dimmed),
),
),
@ -518,13 +518,13 @@ class _ArtCard extends StatelessWidget {
Text(title,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: const TextStyle(color: TimbreColors.foreground)),
style: TextStyle(color: TimbreColors.foreground)),
if (subtitle != null)
Text(subtitle!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style:
const TextStyle(color: TimbreColors.dimmed, fontSize: 12)),
TextStyle(color: TimbreColors.dimmed, fontSize: 12)),
],
),
),
@ -541,7 +541,7 @@ class _ArtCardSkeleton extends StatelessWidget {
width: _ArtCard._size,
child: ClipRRect(
borderRadius: BorderRadius.circular(4),
child: const SizedBox(
child: SizedBox(
width: _ArtCard._size,
height: _ArtCard._size,
child: ColoredBox(color: TimbreColors.surface),