diff --git a/lib/screens/home_tab_widgets.dart b/lib/screens/home_tab_widgets.dart index e2edf4a7..6cf367fc 100644 --- a/lib/screens/home_tab_widgets.dart +++ b/lib/screens/home_tab_widgets.dart @@ -1534,7 +1534,7 @@ class _QuickPicksPageViewState extends State<_QuickPicksPageView> { ), onPressed: () => widget.onItemMenu(item), padding: EdgeInsets.zero, - constraints: const BoxConstraints(minWidth: 32, minHeight: 32), + constraints: const BoxConstraints(minWidth: 48, minHeight: 48), ), ], ), diff --git a/lib/screens/now_playing_screen.dart b/lib/screens/now_playing_screen.dart index d69f378f..fffbaf73 100644 --- a/lib/screens/now_playing_screen.dart +++ b/lib/screens/now_playing_screen.dart @@ -736,9 +736,6 @@ class _NowPlayingScreenState extends ConsumerState { isScrollControlled: true, showDragHandle: true, backgroundColor: colorScheme.surfaceContainerHigh, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.vertical(top: Radius.circular(28)), - ), builder: (context) { return DraggableScrollableSheet( expand: false, @@ -923,9 +920,6 @@ class _NowPlayingScreenState extends ConsumerState { isScrollControlled: true, showDragHandle: true, backgroundColor: colorScheme.surfaceContainerHigh, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.vertical(top: Radius.circular(28)), - ), builder: (context) { return DraggableScrollableSheet( expand: false, @@ -1003,11 +997,13 @@ class _PlaybackControls extends ConsumerWidget { alpha: 0.18, ), thumbColor: colorScheme.primary, + // A 7dp thumb was hard to grab; 10dp with a 24dp overlay + // gives the drag gesture a full-size target. thumbShape: const RoundSliderThumbShape( - enabledThumbRadius: 7, + enabledThumbRadius: 10, ), overlayShape: const RoundSliderOverlayShape( - overlayRadius: 16, + overlayRadius: 24, ), ), child: Slider( diff --git a/lib/widgets/audio_analysis_info_card.dart b/lib/widgets/audio_analysis_info_card.dart index 1b9b372a..805e439b 100644 --- a/lib/widgets/audio_analysis_info_card.dart +++ b/lib/widgets/audio_analysis_info_card.dart @@ -46,8 +46,8 @@ class _AudioInfoCard extends StatelessWidget { visualDensity: VisualDensity.compact, padding: EdgeInsets.zero, constraints: const BoxConstraints( - minWidth: 32, - minHeight: 32, + minWidth: 48, + minHeight: 48, ), color: cs.onSurfaceVariant, onPressed: onRescan, diff --git a/lib/widgets/audio_analysis_widget.dart b/lib/widgets/audio_analysis_widget.dart index d2a1c8b3..0fb10273 100644 --- a/lib/widgets/audio_analysis_widget.dart +++ b/lib/widgets/audio_analysis_widget.dart @@ -1281,7 +1281,7 @@ class _AudioAnalysisCardState extends State { tooltip: l10n.audioAnalysisRescan, visualDensity: VisualDensity.compact, padding: EdgeInsets.zero, - constraints: const BoxConstraints(minWidth: 32, minHeight: 32), + constraints: const BoxConstraints(minWidth: 48, minHeight: 48), color: cs.onErrorContainer, onPressed: () => _analyze(forceRefresh: true), ), diff --git a/lib/widgets/audio_quality_badges.dart b/lib/widgets/audio_quality_badges.dart index 9d8135ed..a4868d6f 100644 --- a/lib/widgets/audio_quality_badges.dart +++ b/lib/widgets/audio_quality_badges.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:spotiflac_android/theme/app_tokens.dart'; class AudioQualityBadge extends StatelessWidget { final String label; @@ -16,12 +17,12 @@ class AudioQualityBadge extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 1), decoration: BoxDecoration( color: colorScheme.primaryContainer.withValues(alpha: 0.6), - borderRadius: BorderRadius.circular(4), + borderRadius: context.tokens.borderRadiusBadge, ), child: Text( label, style: TextStyle( - fontSize: 9, + fontSize: context.tokens.badgeFontSize, fontWeight: FontWeight.w600, color: colorScheme.onPrimaryContainer, height: 1.3, @@ -41,17 +42,17 @@ class ExplicitBadge extends StatelessWidget { return Tooltip( message: 'Explicit', child: Container( - width: 14, - height: 14, + width: 18, + height: 18, alignment: Alignment.center, decoration: BoxDecoration( color: colorScheme.onSurfaceVariant.withValues(alpha: 0.85), - borderRadius: BorderRadius.circular(3), + borderRadius: context.tokens.borderRadiusBadge, ), child: Text( 'E', style: TextStyle( - fontSize: 9, + fontSize: context.tokens.badgeFontSize, fontWeight: FontWeight.w700, color: colorScheme.surface, height: 1.0, @@ -73,7 +74,7 @@ class DolbyAtmosBadge extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 1), decoration: BoxDecoration( color: colorScheme.tertiaryContainer.withValues(alpha: 0.6), - borderRadius: BorderRadius.circular(4), + borderRadius: context.tokens.borderRadiusBadge, ), child: Row( mainAxisSize: MainAxisSize.min, @@ -86,7 +87,7 @@ class DolbyAtmosBadge extends StatelessWidget { Text( 'Atmos', style: TextStyle( - fontSize: 9, + fontSize: context.tokens.badgeFontSize, fontWeight: FontWeight.w600, color: colorScheme.onTertiaryContainer, height: 1.3, diff --git a/lib/widgets/in_library_badge.dart b/lib/widgets/in_library_badge.dart index e0a77250..4e536a3b 100644 --- a/lib/widgets/in_library_badge.dart +++ b/lib/widgets/in_library_badge.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:spotiflac_android/theme/app_tokens.dart'; import 'package:spotiflac_android/l10n/l10n.dart'; /// Small "In Library" chip shown next to a track that already exists in the @@ -10,24 +11,24 @@ class InLibraryBadge extends StatelessWidget { Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; return Container( - padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 2), + padding: context.tokens.badgePadding, decoration: BoxDecoration( color: colorScheme.primaryContainer, - borderRadius: BorderRadius.circular(4), + borderRadius: context.tokens.borderRadiusBadge, ), child: Row( mainAxisSize: MainAxisSize.min, children: [ Icon( Icons.folder_outlined, - size: 10, + size: 12, color: colorScheme.onPrimaryContainer, ), const SizedBox(width: 3), Text( context.l10n.libraryInLibrary, style: TextStyle( - fontSize: 9, + fontSize: context.tokens.badgeFontSize, fontWeight: FontWeight.w500, color: colorScheme.onPrimaryContainer, ), diff --git a/lib/widgets/preview_button.dart b/lib/widgets/preview_button.dart index bb26a2d6..3751a44a 100644 --- a/lib/widgets/preview_button.dart +++ b/lib/widgets/preview_button.dart @@ -49,7 +49,7 @@ class PreviewButton extends ConsumerWidget { padding: EdgeInsets.zero, alignment: Alignment.centerRight, visualDensity: VisualDensity.compact, - constraints: const BoxConstraints(minWidth: 24, minHeight: 36), + constraints: const BoxConstraints(minWidth: 48, minHeight: 48), icon: Icon( isPlaying ? Icons.pause_circle_filled_rounded @@ -113,7 +113,7 @@ class PreviewButton extends ConsumerWidget { padding: EdgeInsets.zero, alignment: Alignment.centerRight, visualDensity: VisualDensity.compact, - constraints: const BoxConstraints(minWidth: 24, minHeight: 36), + constraints: const BoxConstraints(minWidth: 48, minHeight: 48), icon: icon, tooltip: tooltip, onPressed: () => _onPressed(context, ref),