chore: include interscrollbar in left out pages

This commit is contained in:
Kingkor Roy Tirtho 2023-10-01 13:24:36 +06:00
parent a3250882df
commit 8ca1aa38a2
5 changed files with 641 additions and 619 deletions

View File

@ -7,6 +7,7 @@ import 'package:spotify/spotify.dart' hide Offset;
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/shared/image/universal_image.dart'; import 'package:spotube/components/shared/image/universal_image.dart';
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/extensions/constrains.dart'; import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/context.dart';
import 'package:spotube/extensions/duration.dart'; import 'package:spotube/extensions/duration.dart';
@ -17,7 +18,6 @@ import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
import 'package:spotube/provider/user_preferences_provider.dart'; import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/provider/youtube_provider.dart'; import 'package:spotube/provider/youtube_provider.dart';
import 'package:spotube/services/youtube/youtube.dart'; import 'package:spotube/services/youtube/youtube.dart';
import 'package:spotube/utils/primitive_utils.dart';
import 'package:spotube/utils/service_utils.dart'; import 'package:spotube/utils/service_utils.dart';
import 'package:spotube/utils/type_conversion_utils.dart'; import 'package:spotube/utils/type_conversion_utils.dart';
@ -202,6 +202,7 @@ class SiblingTracksSheet extends HookConsumerWidget {
duration: const Duration(milliseconds: 300), duration: const Duration(milliseconds: 300),
transitionBuilder: (child, animation) => transitionBuilder: (child, animation) =>
FadeTransition(opacity: animation, child: child), FadeTransition(opacity: animation, child: child),
child: InterScrollbar(
child: switch (isSearching.value) { child: switch (isSearching.value) {
false => ListView.builder( false => ListView.builder(
itemCount: siblings.length, itemCount: siblings.length,
@ -220,10 +221,12 @@ class SiblingTracksSheet extends HookConsumerWidget {
child: CircularProgressIndicator()); child: CircularProgressIndicator());
} }
return ListView.builder( return InterScrollbar(
child: ListView.builder(
itemCount: snapshot.data!.length, itemCount: snapshot.data!.length,
itemBuilder: (context, index) => itemBuilder: (context, index) =>
itemBuilder(snapshot.data![index]), itemBuilder(snapshot.data![index]),
),
); );
}, },
), ),
@ -234,6 +237,7 @@ class SiblingTracksSheet extends HookConsumerWidget {
), ),
), ),
), ),
),
); );
} }
} }

View File

@ -7,6 +7,7 @@ import 'package:hooks_riverpod/hooks_riverpod.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/shared/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/shared/shimmers/shimmer_artist_profile.dart'; import 'package:spotube/components/shared/shimmers/shimmer_artist_profile.dart';
import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/components/shared/track_table/track_tile.dart'; import 'package:spotube/components/shared/track_table/track_tile.dart';
@ -90,7 +91,9 @@ class ArtistPage extends HookConsumerWidget {
BlacklistedElement.artist(artistId, data.name!), BlacklistedElement.artist(artistId, data.name!),
); );
return SingleChildScrollView( return InterScrollbar(
controller: parentScrollController,
child: SingleChildScrollView(
controller: parentScrollController, controller: parentScrollController,
child: SafeArea( child: SafeArea(
child: Column( child: Column(
@ -213,14 +216,16 @@ class ArtistPage extends HookConsumerWidget {
return const SizedBox( return const SizedBox(
height: 20, height: 20,
width: 20, width: 20,
child: CircularProgressIndicator(), child:
CircularProgressIndicator(),
); );
} }
if (isFollowingQuery.data!) { if (isFollowingQuery.data!) {
return OutlinedButton( return OutlinedButton(
onPressed: followUnfollow, onPressed: followUnfollow,
child: Text(context.l10n.following), child:
Text(context.l10n.following),
); );
} }
@ -268,7 +273,8 @@ class ArtistPage extends HookConsumerWidget {
IconButton( IconButton(
icon: const Icon(SpotubeIcons.share), icon: const Icon(SpotubeIcons.share),
onPressed: () async { onPressed: () async {
if (data.externalUrls?.spotify != null) { if (data.externalUrls?.spotify !=
null) {
await Clipboard.setData( await Clipboard.setData(
ClipboardData( ClipboardData(
text: data.externalUrls!.spotify!, text: data.externalUrls!.spotify!,
@ -326,8 +332,8 @@ class ArtistPage extends HookConsumerWidget {
if (!isPlaylistPlaying) { if (!isPlaylistPlaying) {
playlistNotifier.load( playlistNotifier.load(
tracks, tracks,
initialIndex: tracks initialIndex: tracks.indexWhere(
.indexWhere((s) => s.id == currentTrack?.id), (s) => s.id == currentTrack?.id),
autoPlay: true, autoPlay: true,
); );
} else if (isPlaylistPlaying && } else if (isPlaylistPlaying &&
@ -379,7 +385,8 @@ class ArtistPage extends HookConsumerWidget {
color: Colors.white, color: Colors.white,
), ),
style: IconButton.styleFrom( style: IconButton.styleFrom(
backgroundColor: theme.colorScheme.primary, backgroundColor:
theme.colorScheme.primary,
), ),
onPressed: () => onPressed: () =>
playPlaylist(topTracks.toList()), playPlaylist(topTracks.toList()),
@ -451,6 +458,7 @@ class ArtistPage extends HookConsumerWidget {
], ],
), ),
), ),
),
); );
}, },
), ),

View File

@ -9,6 +9,7 @@ import 'package:spotify/spotify.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/album/album_card.dart'; import 'package:spotube/components/album/album_card.dart';
import 'package:spotube/components/shared/dialogs/prompt_dialog.dart'; import 'package:spotube/components/shared/dialogs/prompt_dialog.dart';
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart';
import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart'; import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
@ -103,7 +104,8 @@ class SearchPage extends HookConsumerWidget {
} }
} }
return SingleChildScrollView( return InterScrollbar(
child: SingleChildScrollView(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
child: SafeArea( child: SafeArea(
@ -313,7 +315,8 @@ class SearchPage extends HookConsumerWidget {
...albums.mapIndexed((i, album) { ...albums.mapIndexed((i, album) {
if (i == albums.length - 1 && if (i == albums.length - 1 &&
searchAlbum.hasNextPage) { searchAlbum.hasNextPage) {
return const ShimmerPlaybuttonCard(count: 1); return const ShimmerPlaybuttonCard(
count: 1);
} }
return AlbumCard( return AlbumCard(
TypeConversionUtils.simpleAlbum_X_Album( TypeConversionUtils.simpleAlbum_X_Album(
@ -340,6 +343,7 @@ class SearchPage extends HookConsumerWidget {
), ),
), ),
), ),
),
); );
}, },
); );

View File

@ -5,6 +5,7 @@ import 'package:fuzzywuzzy/fuzzywuzzy.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/blacklist_provider.dart'; import 'package:spotube/provider/blacklist_provider.dart';
@ -56,7 +57,8 @@ class BlackListPage extends HookConsumerWidget {
), ),
), ),
), ),
ListView.builder( InterScrollbar(
child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
itemCount: filteredBlacklist.length, itemCount: filteredBlacklist.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
@ -76,6 +78,7 @@ class BlackListPage extends HookConsumerWidget {
); );
}, },
), ),
),
], ],
), ),
); );

View File

@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/settings/section_card_with_heading.dart'; import 'package:spotube/components/settings/section_card_with_heading.dart';
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart';
import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/context.dart';
import 'package:spotube/models/logger.dart'; import 'package:spotube/models/logger.dart';
@ -91,6 +92,7 @@ class LogsPage extends HookWidget {
], ],
), ),
body: SafeArea( body: SafeArea(
child: InterScrollbar(
child: ListView.builder( child: ListView.builder(
itemCount: logs.value.length, itemCount: logs.value.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
@ -134,6 +136,7 @@ class LogsPage extends HookWidget {
}, },
), ),
), ),
),
); );
} }
} }