chore: enable sliding transition for queue, alternative source and lyrics page for small screen

This commit is contained in:
Kingkor Roy Tirtho 2025-03-06 23:04:04 +06:00
parent 677f95f266
commit a9586a64f2
5 changed files with 21 additions and 20 deletions

View File

@ -190,15 +190,24 @@ class AppRouter extends RootStackRouter {
), ),
], ],
), ),
AutoRoute( CustomRoute(
transitionsBuilder: TransitionsBuilders.slideBottom,
durationInMilliseconds: 200,
reverseDurationInMilliseconds: 200,
path: "/player/queue", path: "/player/queue",
page: PlayerQueueRoute.page, page: PlayerQueueRoute.page,
), ),
AutoRoute( CustomRoute(
transitionsBuilder: TransitionsBuilders.slideBottom,
durationInMilliseconds: 200,
reverseDurationInMilliseconds: 200,
path: "/player/sources", path: "/player/sources",
page: PlayerTrackSourcesRoute.page, page: PlayerTrackSourcesRoute.page,
), ),
AutoRoute( CustomRoute(
transitionsBuilder: TransitionsBuilders.slideBottom,
durationInMilliseconds: 200,
reverseDurationInMilliseconds: 200,
path: "/player/lyrics", path: "/player/lyrics",
page: PlayerLyricsRoute.page, page: PlayerLyricsRoute.page,
), ),

View File

@ -9,6 +9,7 @@ import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/button/back_button.dart';
import 'package:spotube/components/fallbacks/not_found.dart'; import 'package:spotube/components/fallbacks/not_found.dart';
import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart'; import 'package:spotube/components/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/track_tile/track_tile.dart'; import 'package:spotube/components/track_tile/track_tile.dart';
@ -50,7 +51,7 @@ class PlayerQueue extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, ref) { Widget build(BuildContext context, ref) {
final mediaQuery = MediaQuery.of(context); final mediaQuery = MediaQuery.sizeOf(context);
final controller = useAutoScrollController(); final controller = useAutoScrollController();
final searchText = useState(''); final searchText = useState('');
@ -91,8 +92,7 @@ class PlayerQueue extends HookConsumerWidget {
final searchBar = ConstrainedBox( final searchBar = ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(
maxHeight: 40, maxHeight: 40,
maxWidth: maxWidth: mediaQuery.smAndDown ? mediaQuery.width - 40 : 300,
mediaQuery.smAndDown ? mediaQuery.size.width - 40 : 300,
), ),
child: TextField( child: TextField(
onChanged: (value) { onChanged: (value) {
@ -157,7 +157,7 @@ class PlayerQueue extends HookConsumerWidget {
isSearching.value = !isSearching.value; isSearching.value = !isSearching.value;
}, },
), ),
if (mediaQuery.mdAndUp || !isSearching.value) ...[ if (!isSearching.value) ...[
const SizedBox(width: 10), const SizedBox(width: 10),
Tooltip( Tooltip(
tooltip: TooltipContainer( tooltip: TooltipContainer(
@ -170,6 +170,9 @@ class PlayerQueue extends HookConsumerWidget {
}, },
), ),
), ),
const Gap(5),
if (mediaQuery.smAndDown)
const BackButton(icon: SpotubeIcons.angleDown),
], ],
], ],
), ),

View File

@ -252,7 +252,7 @@ class SiblingTracksSheet extends HookConsumerWidget {
isSearching.value = true; isSearching.value = true;
}, },
), ),
if (!floating) const BackButton(icon: SpotubeIcons.close) if (!floating) const BackButton(icon: SpotubeIcons.angleDown)
] else ...[ ] else ...[
if (preferences.audioSource == AudioSource.piped) if (preferences.audioSource == AudioSource.piped)
IconButton.outline( IconButton.outline(

View File

@ -48,7 +48,7 @@ class PlayerLyricsPage extends HookConsumerWidget {
AppBar( AppBar(
leading: [tabbar], leading: [tabbar],
trailing: const [ trailing: const [
BackButton(icon: SpotubeIcons.close), BackButton(icon: SpotubeIcons.angleDown),
], ],
), ),
], ],

View File

@ -1,9 +1,6 @@
import 'package:auto_route/annotations.dart'; import 'package:auto_route/annotations.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/button/back_button.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/modules/player/player_queue.dart'; import 'package:spotube/modules/player/player_queue.dart';
import 'package:spotube/provider/audio_player/audio_player.dart'; import 'package:spotube/provider/audio_player/audio_player.dart';
@ -18,14 +15,6 @@ class PlayerQueuePage extends HookConsumerWidget {
); );
final playlistNotifier = ref.read(audioPlayerProvider.notifier); final playlistNotifier = ref.read(audioPlayerProvider.notifier);
return Scaffold( return Scaffold(
headers: [
AppBar(
title: Text(context.l10n.queue),
trailing: const [
BackButton(icon: SpotubeIcons.close),
],
),
],
child: PlayerQueue.fromAudioPlayerNotifier( child: PlayerQueue.fromAudioPlayerNotifier(
floating: false, floating: false,
playlist: playlist, playlist: playlist,