mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
chore: fix width of scrollbar & non-interactive scrollbar in android
This commit is contained in:
parent
5bb8231782
commit
a3250882df
@ -7,6 +7,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/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/waypoint.dart';
|
import 'package:spotube/components/shared/waypoint.dart';
|
||||||
@ -70,12 +71,14 @@ class UserAlbums extends HookConsumerWidget {
|
|||||||
child: SearchBar(
|
child: SearchBar(
|
||||||
onChanged: (value) => searchText.value = value,
|
onChanged: (value) => searchText.value = value,
|
||||||
leading: const Icon(SpotubeIcons.filter),
|
leading: const Icon(SpotubeIcons.filter),
|
||||||
hintText: context.l10n.filter_artist,
|
hintText: context.l10n.filter_albums,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
body: SizedBox.expand(
|
body: SizedBox.expand(
|
||||||
|
child: InterScrollbar(
|
||||||
|
controller: controller,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
controller: controller,
|
controller: controller,
|
||||||
@ -108,6 +111,7 @@ class UserAlbums extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ 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/fallbacks/anonymous_fallback.dart';
|
import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
|
||||||
import 'package:spotube/components/artist/artist_card.dart';
|
import 'package:spotube/components/artist/artist_card.dart';
|
||||||
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/provider/authentication_provider.dart';
|
import 'package:spotube/provider/authentication_provider.dart';
|
||||||
import 'package:spotube/services/queries/queries.dart';
|
import 'package:spotube/services/queries/queries.dart';
|
||||||
@ -78,6 +79,8 @@ class UserArtists extends HookConsumerWidget {
|
|||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
await artistQuery.refresh();
|
await artistQuery.refresh();
|
||||||
},
|
},
|
||||||
|
child: InterScrollbar(
|
||||||
|
controller: controller,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
@ -96,6 +99,7 @@ class UserArtists extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import 'package:permission_handler/permission_handler.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/expandable_search/expandable_search.dart';
|
import 'package:spotube/components/shared/expandable_search/expandable_search.dart';
|
||||||
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart';
|
import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart';
|
||||||
import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
|
import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
|
||||||
import 'package:spotube/components/shared/track_table/track_tile.dart';
|
import 'package:spotube/components/shared/track_table/track_tile.dart';
|
||||||
@ -286,6 +287,7 @@ class UserLocalTracks extends HookConsumerWidget {
|
|||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
ref.refresh(localTracksProvider);
|
ref.refresh(localTracksProvider);
|
||||||
},
|
},
|
||||||
|
child: InterScrollbar(
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
itemCount: filteredTracks.length,
|
itemCount: filteredTracks.length,
|
||||||
@ -306,6 +308,7 @@ class UserLocalTracks extends HookConsumerWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
loading: () =>
|
loading: () =>
|
||||||
|
@ -8,6 +8,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/playlist/playlist_create_dialog.dart';
|
import 'package:spotube/components/playlist/playlist_create_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/playlist/playlist_card.dart';
|
import 'package:spotube/components/playlist/playlist_card.dart';
|
||||||
@ -79,6 +80,8 @@ class UserPlaylists extends HookConsumerWidget {
|
|||||||
|
|
||||||
return RefreshIndicator(
|
return RefreshIndicator(
|
||||||
onRefresh: playlistsQuery.refresh,
|
onRefresh: playlistsQuery.refresh,
|
||||||
|
child: InterScrollbar(
|
||||||
|
controller: controller,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
@ -136,6 +139,7 @@ class UserPlaylists extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
import 'package:scroll_to_index/scroll_to_index.dart';
|
import 'package:scroll_to_index/scroll_to_index.dart';
|
||||||
import 'package:spotube/collections/spotube_icons.dart';
|
import 'package:spotube/collections/spotube_icons.dart';
|
||||||
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
||||||
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/track_table/track_tile.dart';
|
import 'package:spotube/components/shared/track_table/track_tile.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';
|
||||||
@ -196,6 +197,8 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
if (!isSearching.value && searchText.value.isEmpty)
|
if (!isSearching.value && searchText.value.isEmpty)
|
||||||
Flexible(
|
Flexible(
|
||||||
|
child: InterScrollbar(
|
||||||
|
controller: controller,
|
||||||
child: ReorderableListView.builder(
|
child: ReorderableListView.builder(
|
||||||
onReorder: (oldIndex, newIndex) {
|
onReorder: (oldIndex, newIndex) {
|
||||||
playlistNotifier.moveTrack(oldIndex, newIndex);
|
playlistNotifier.moveTrack(oldIndex, newIndex);
|
||||||
@ -233,15 +236,18 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
Flexible(
|
Flexible(
|
||||||
|
child: InterScrollbar(
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
itemCount: filteredTracks.length,
|
itemCount: filteredTracks.length,
|
||||||
itemBuilder: (context, i) {
|
itemBuilder: (context, i) {
|
||||||
final track = filteredTracks.elementAt(i);
|
final track = filteredTracks.elementAt(i);
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8.0),
|
padding:
|
||||||
|
const EdgeInsets.symmetric(horizontal: 8.0),
|
||||||
child: TrackTile(
|
child: TrackTile(
|
||||||
index: i,
|
index: i,
|
||||||
track: track,
|
track: track,
|
||||||
@ -256,6 +262,7 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
|
69
lib/components/shared/inter_scrollbar/inter_scrollbar.dart
Normal file
69
lib/components/shared/inter_scrollbar/inter_scrollbar.dart
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_desktop_tools/flutter_desktop_tools.dart';
|
||||||
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
|
|
||||||
|
class InterScrollbar extends HookWidget {
|
||||||
|
final Widget child;
|
||||||
|
final ScrollController? controller;
|
||||||
|
final bool? thumbVisibility;
|
||||||
|
final bool? trackVisibility;
|
||||||
|
final double? thickness;
|
||||||
|
final Radius? radius;
|
||||||
|
final bool Function(ScrollNotification)? notificationPredicate;
|
||||||
|
final bool? interactive;
|
||||||
|
final ScrollbarOrientation? scrollbarOrientation;
|
||||||
|
|
||||||
|
const InterScrollbar({
|
||||||
|
super.key,
|
||||||
|
required this.child,
|
||||||
|
this.controller,
|
||||||
|
this.thumbVisibility,
|
||||||
|
this.trackVisibility,
|
||||||
|
this.thickness,
|
||||||
|
this.radius,
|
||||||
|
this.notificationPredicate,
|
||||||
|
this.interactive,
|
||||||
|
this.scrollbarOrientation,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final theme = Theme.of(context);
|
||||||
|
|
||||||
|
if (DesktopTools.platform.isDesktop) return child;
|
||||||
|
|
||||||
|
return ScrollbarTheme(
|
||||||
|
data: theme.scrollbarTheme.copyWith(
|
||||||
|
crossAxisMargin: 10,
|
||||||
|
minThumbLength: 80,
|
||||||
|
thickness: MaterialStateProperty.resolveWith((states) {
|
||||||
|
if (states.contains(MaterialState.hovered) ||
|
||||||
|
states.contains(MaterialState.dragged) ||
|
||||||
|
states.contains(MaterialState.pressed)) {
|
||||||
|
return 40;
|
||||||
|
}
|
||||||
|
return 20;
|
||||||
|
}),
|
||||||
|
radius: const Radius.circular(20),
|
||||||
|
thumbColor: MaterialStateProperty.resolveWith((states) {
|
||||||
|
if (states.contains(MaterialState.hovered) ||
|
||||||
|
states.contains(MaterialState.dragged)) {
|
||||||
|
return theme.colorScheme.onSurface.withOpacity(0.5);
|
||||||
|
}
|
||||||
|
return theme.colorScheme.onSurface.withOpacity(0.3);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
child: Scrollbar(
|
||||||
|
controller: controller,
|
||||||
|
thumbVisibility: thumbVisibility,
|
||||||
|
trackVisibility: trackVisibility,
|
||||||
|
thickness: thickness,
|
||||||
|
radius: radius,
|
||||||
|
notificationPredicate: notificationPredicate,
|
||||||
|
interactive: interactive ?? true,
|
||||||
|
scrollbarOrientation: scrollbarOrientation,
|
||||||
|
child: child,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ 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/playlist/playlist_create_dialog.dart';
|
import 'package:spotube/components/playlist/playlist_create_dialog.dart';
|
||||||
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart';
|
import 'package:spotube/components/shared/shimmers/shimmer_track_tile.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_collection_view/track_collection_heading.dart';
|
import 'package:spotube/components/shared/track_table/track_collection_view/track_collection_heading.dart';
|
||||||
@ -139,6 +140,8 @@ class TrackCollectionView<T> extends HookConsumerWidget {
|
|||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
await tracksSnapshot.refresh();
|
await tracksSnapshot.refresh();
|
||||||
},
|
},
|
||||||
|
child: InterScrollbar(
|
||||||
|
controller: controller,
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
physics: const AlwaysScrollableScrollPhysics(),
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
@ -265,6 +268,7 @@ class TrackCollectionView<T> extends HookConsumerWidget {
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import 'package:spotify/spotify.dart';
|
|||||||
import 'package:spotube/collections/spotube_icons.dart';
|
import 'package:spotube/collections/spotube_icons.dart';
|
||||||
import 'package:spotube/components/genre/category_card.dart';
|
import 'package:spotube/components/genre/category_card.dart';
|
||||||
import 'package:spotube/components/shared/expandable_search/expandable_search.dart';
|
import 'package:spotube/components/shared/expandable_search/expandable_search.dart';
|
||||||
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/shimmers/shimmer_categories.dart';
|
import 'package:spotube/components/shared/shimmers/shimmer_categories.dart';
|
||||||
import 'package:spotube/components/shared/waypoint.dart';
|
import 'package:spotube/components/shared/waypoint.dart';
|
||||||
|
|
||||||
@ -77,6 +78,8 @@ class GenrePage extends HookConsumerWidget {
|
|||||||
const ShimmerCategories()
|
const ShimmerCategories()
|
||||||
else
|
else
|
||||||
Expanded(
|
Expanded(
|
||||||
|
child: InterScrollbar(
|
||||||
|
controller: scrollController,
|
||||||
child: ListView.builder(
|
child: ListView.builder(
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
itemCount: categories.length,
|
itemCount: categories.length,
|
||||||
@ -94,6 +97,7 @@ class GenrePage extends HookConsumerWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -6,6 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/components/album/album_card.dart';
|
import 'package:spotube/components/album/album_card.dart';
|
||||||
import 'package:spotube/components/playlist/playlist_card.dart';
|
import 'package:spotube/components/playlist/playlist_card.dart';
|
||||||
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/shimmers/shimmer_categories.dart';
|
import 'package:spotube/components/shared/shimmers/shimmer_categories.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/waypoint.dart';
|
import 'package:spotube/components/shared/waypoint.dart';
|
||||||
@ -96,6 +97,7 @@ class PersonalizedPage extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
final controller = useScrollController();
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(AuthenticationNotifier.provider);
|
||||||
final featuredPlaylistsQuery = useQueries.playlist.featured(ref);
|
final featuredPlaylistsQuery = useQueries.playlist.featured(ref);
|
||||||
final playlists = useMemoized(
|
final playlists = useMemoized(
|
||||||
@ -124,7 +126,10 @@ class PersonalizedPage extends HookConsumerWidget {
|
|||||||
[newReleases.pages],
|
[newReleases.pages],
|
||||||
);
|
);
|
||||||
|
|
||||||
return ListView(
|
return InterScrollbar(
|
||||||
|
controller: controller,
|
||||||
|
child: ListView(
|
||||||
|
controller: controller,
|
||||||
children: [
|
children: [
|
||||||
if (!featuredPlaylistsQuery.hasPageData)
|
if (!featuredPlaylistsQuery.hasPageData)
|
||||||
const ShimmerCategories()
|
const ShimmerCategories()
|
||||||
@ -135,7 +140,9 @@ class PersonalizedPage extends HookConsumerWidget {
|
|||||||
hasNextPage: featuredPlaylistsQuery.hasNextPage,
|
hasNextPage: featuredPlaylistsQuery.hasNextPage,
|
||||||
onFetchMore: featuredPlaylistsQuery.fetchNext,
|
onFetchMore: featuredPlaylistsQuery.fetchNext,
|
||||||
),
|
),
|
||||||
if (auth != null && newReleases.hasPageData && userArtistsQuery.hasData)
|
if (auth != null &&
|
||||||
|
newReleases.hasPageData &&
|
||||||
|
userArtistsQuery.hasData)
|
||||||
PersonalizedItemCard(
|
PersonalizedItemCard(
|
||||||
albums: albums,
|
albums: albums,
|
||||||
title: context.l10n.new_releases,
|
title: context.l10n.new_releases,
|
||||||
@ -158,6 +165,7 @@ class PersonalizedPage extends HookConsumerWidget {
|
|||||||
);
|
);
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import 'package:spotube/components/settings/color_scheme_picker_dialog.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/adaptive/adaptive_list_tile.dart';
|
import 'package:spotube/components/shared/adaptive/adaptive_list_tile.dart';
|
||||||
import 'package:spotube/components/shared/adaptive/adaptive_select_tile.dart';
|
import 'package:spotube/components/shared/adaptive/adaptive_select_tile.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/collections/spotify_markets.dart';
|
import 'package:spotube/collections/spotify_markets.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
@ -70,6 +71,7 @@ class SettingsPage extends HookConsumerWidget {
|
|||||||
Flexible(
|
Flexible(
|
||||||
child: Container(
|
child: Container(
|
||||||
constraints: const BoxConstraints(maxWidth: 1366),
|
constraints: const BoxConstraints(maxWidth: 1366),
|
||||||
|
child: InterScrollbar(
|
||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
const SettingsAccountSection(),
|
const SettingsAccountSection(),
|
||||||
@ -131,7 +133,8 @@ class SettingsPage extends HookConsumerWidget {
|
|||||||
AdaptiveSelectTile<LayoutMode>(
|
AdaptiveSelectTile<LayoutMode>(
|
||||||
secondary: const Icon(SpotubeIcons.dashboard),
|
secondary: const Icon(SpotubeIcons.dashboard),
|
||||||
title: Text(context.l10n.layout_mode),
|
title: Text(context.l10n.layout_mode),
|
||||||
subtitle: Text(context.l10n.override_layout_settings),
|
subtitle:
|
||||||
|
Text(context.l10n.override_layout_settings),
|
||||||
value: preferences.layoutMode,
|
value: preferences.layoutMode,
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
@ -268,15 +271,15 @@ class SettingsPage extends HookConsumerWidget {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
text: context
|
text: context
|
||||||
.l10n.piped_description,
|
.l10n.piped_description,
|
||||||
style:
|
style: theme
|
||||||
theme.textTheme.bodyMedium,
|
.textTheme.bodyMedium,
|
||||||
),
|
),
|
||||||
const TextSpan(text: "\n"),
|
const TextSpan(text: "\n"),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text:
|
text: context
|
||||||
context.l10n.piped_warning,
|
.l10n.piped_warning,
|
||||||
style:
|
style: theme
|
||||||
theme.textTheme.labelMedium,
|
.textTheme.labelMedium,
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -313,7 +316,8 @@ class SettingsPage extends HookConsumerWidget {
|
|||||||
.toList(),
|
.toList(),
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
preferences.setPipedInstance(value);
|
preferences
|
||||||
|
.setPipedInstance(value);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -571,6 +575,7 @@ class SettingsPage extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -69,13 +69,7 @@ ThemeData theme(Color seed, Brightness brightness, bool isAmoled) {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
scrollbarTheme: DesktopTools.platform.isMobile
|
scrollbarTheme: const ScrollbarThemeData(
|
||||||
? const ScrollbarThemeData(
|
|
||||||
interactive: true,
|
|
||||||
thickness: MaterialStatePropertyAll(18),
|
|
||||||
minThumbLength: 20,
|
|
||||||
)
|
|
||||||
: const ScrollbarThemeData(
|
|
||||||
thickness: MaterialStatePropertyAll(14),
|
thickness: MaterialStatePropertyAll(14),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user