mirror of
https://github.com/KRTirtho/spotube.git
synced 2026-05-08 16:24:36 +00:00
chore: fix dart lint issues
This commit is contained in:
parent
94b3e160c2
commit
dc999b81f0
@ -11,8 +11,8 @@ class ArtistAlbumList extends HookConsumerWidget {
|
|||||||
final String artistId;
|
final String artistId;
|
||||||
ArtistAlbumList(
|
ArtistAlbumList(
|
||||||
this.artistId, {
|
this.artistId, {
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
final logger = getLogger(ArtistAlbumList);
|
final logger = getLogger(ArtistAlbumList);
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import 'package:spotube/utils/type_conversion_utils.dart';
|
|||||||
|
|
||||||
class ArtistCard extends HookConsumerWidget {
|
class ArtistCard extends HookConsumerWidget {
|
||||||
final Artist artist;
|
final Artist artist;
|
||||||
const ArtistCard(this.artist, {Key? key}) : super(key: key);
|
const ArtistCard(this.artist, {super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
class TokenLoginForm extends HookConsumerWidget {
|
class TokenLoginForm extends HookConsumerWidget {
|
||||||
final void Function()? onDone;
|
final void Function()? onDone;
|
||||||
const TokenLoginForm({
|
const TokenLoginForm({
|
||||||
Key? key,
|
super.key,
|
||||||
this.onDone,
|
this.onDone,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import 'package:flutter/material.dart' hide Page;
|
import 'package:flutter/material.dart' hide Page;
|
||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/components/shared/horizontal_playbutton_card_view/horizontal_playbutton_card_view.dart';
|
import 'package:spotube/components/shared/horizontal_playbutton_card_view/horizontal_playbutton_card_view.dart';
|
||||||
|
|||||||
@ -25,7 +25,7 @@ class MultiSelectField<T> extends HookWidget {
|
|||||||
final bool enabled;
|
final bool enabled;
|
||||||
|
|
||||||
const MultiSelectField({
|
const MultiSelectField({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.options,
|
required this.options,
|
||||||
required this.selectedOptions,
|
required this.selectedOptions,
|
||||||
required this.getValueForOption,
|
required this.getValueForOption,
|
||||||
@ -36,7 +36,7 @@ class MultiSelectField<T> extends HookWidget {
|
|||||||
this.dialogTitle,
|
this.dialogTitle,
|
||||||
this.helperText,
|
this.helperText,
|
||||||
this.enabled = true,
|
this.enabled = true,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
Widget defaultSelectedOptionBuilder(T option) {
|
Widget defaultSelectedOptionBuilder(T option) {
|
||||||
return Chip(
|
return Chip(
|
||||||
@ -134,14 +134,14 @@ class _MultiSelectDialog<T> extends HookWidget {
|
|||||||
final String? helperText;
|
final String? helperText;
|
||||||
|
|
||||||
const _MultiSelectDialog({
|
const _MultiSelectDialog({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.dialogTitle,
|
required this.dialogTitle,
|
||||||
required this.options,
|
required this.options,
|
||||||
required this.getValueForOption,
|
required this.getValueForOption,
|
||||||
this.optionBuilder,
|
this.optionBuilder,
|
||||||
this.initialSelection = const [],
|
this.initialSelection = const [],
|
||||||
this.helperText,
|
this.helperText,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -20,12 +20,12 @@ class RecommendationAttributeDials extends HookWidget {
|
|||||||
final double base;
|
final double base;
|
||||||
|
|
||||||
const RecommendationAttributeDials({
|
const RecommendationAttributeDials({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.values,
|
required this.values,
|
||||||
required this.onChanged,
|
required this.onChanged,
|
||||||
required this.title,
|
required this.title,
|
||||||
this.base = 1,
|
this.base = 1,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -12,12 +12,12 @@ class RecommendationAttributeFields extends HookWidget {
|
|||||||
final Map<String, RecommendationAttribute>? presets;
|
final Map<String, RecommendationAttribute>? presets;
|
||||||
|
|
||||||
const RecommendationAttributeFields({
|
const RecommendationAttributeFields({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.values,
|
required this.values,
|
||||||
required this.onChanged,
|
required this.onChanged,
|
||||||
required this.title,
|
required this.title,
|
||||||
this.presets,
|
this.presets,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -26,7 +26,7 @@ class SeedsMultiAutocomplete<T extends Object> extends HookWidget {
|
|||||||
final SelectedItemDisplayType selectedItemDisplayType;
|
final SelectedItemDisplayType selectedItemDisplayType;
|
||||||
|
|
||||||
const SeedsMultiAutocomplete({
|
const SeedsMultiAutocomplete({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.seeds,
|
required this.seeds,
|
||||||
required this.fetchSeeds,
|
required this.fetchSeeds,
|
||||||
required this.autocompleteOptionBuilder,
|
required this.autocompleteOptionBuilder,
|
||||||
@ -35,7 +35,7 @@ class SeedsMultiAutocomplete<T extends Object> extends HookWidget {
|
|||||||
this.inputDecoration,
|
this.inputDecoration,
|
||||||
this.enabled = true,
|
this.enabled = true,
|
||||||
this.selectedItemDisplayType = SelectedItemDisplayType.wrap,
|
this.selectedItemDisplayType = SelectedItemDisplayType.wrap,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -10,10 +10,10 @@ class SimpleTrackTile extends HookWidget {
|
|||||||
final Track track;
|
final Track track;
|
||||||
final VoidCallback? onDelete;
|
final VoidCallback? onDelete;
|
||||||
const SimpleTrackTile({
|
const SimpleTrackTile({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.track,
|
required this.track,
|
||||||
this.onDelete,
|
this.onDelete,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import 'package:spotube/services/queries/queries.dart';
|
|||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
||||||
|
|
||||||
class UserAlbums extends HookConsumerWidget {
|
class UserAlbums extends HookConsumerWidget {
|
||||||
const UserAlbums({Key? key}) : super(key: key);
|
const UserAlbums({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
import 'package:spotube/services/queries/queries.dart';
|
import 'package:spotube/services/queries/queries.dart';
|
||||||
|
|
||||||
class UserArtists extends HookConsumerWidget {
|
class UserArtists extends HookConsumerWidget {
|
||||||
const UserArtists({Key? key}) : super(key: key);
|
const UserArtists({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import 'package:spotube/extensions/context.dart';
|
|||||||
import 'package:spotube/provider/download_manager_provider.dart';
|
import 'package:spotube/provider/download_manager_provider.dart';
|
||||||
|
|
||||||
class UserDownloads extends HookConsumerWidget {
|
class UserDownloads extends HookConsumerWidget {
|
||||||
const UserDownloads({Key? key}) : super(key: key);
|
const UserDownloads({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -13,9 +13,9 @@ import 'package:spotube/utils/type_conversion_utils.dart';
|
|||||||
class DownloadItem extends HookConsumerWidget {
|
class DownloadItem extends HookConsumerWidget {
|
||||||
final Track track;
|
final Track track;
|
||||||
const DownloadItem({
|
const DownloadItem({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.track,
|
required this.track,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -129,7 +129,7 @@ final localTracksProvider = FutureProvider<List<LocalTrack>>((ref) async {
|
|||||||
});
|
});
|
||||||
|
|
||||||
class UserLocalTracks extends HookConsumerWidget {
|
class UserLocalTracks extends HookConsumerWidget {
|
||||||
const UserLocalTracks({Key? key}) : super(key: key);
|
const UserLocalTracks({super.key});
|
||||||
|
|
||||||
Future<void> playLocalTracks(
|
Future<void> playLocalTracks(
|
||||||
WidgetRef ref,
|
WidgetRef ref,
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
import 'package:spotube/services/queries/queries.dart';
|
import 'package:spotube/services/queries/queries.dart';
|
||||||
|
|
||||||
class UserPlaylists extends HookConsumerWidget {
|
class UserPlaylists extends HookConsumerWidget {
|
||||||
const UserPlaylists({Key? key}) : super(key: key);
|
const UserPlaylists({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -17,7 +17,7 @@ class ZoomControls extends HookWidget {
|
|||||||
final String unit;
|
final String unit;
|
||||||
|
|
||||||
const ZoomControls({
|
const ZoomControls({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.value,
|
required this.value,
|
||||||
required this.onChanged,
|
required this.onChanged,
|
||||||
this.min,
|
this.min,
|
||||||
@ -27,7 +27,7 @@ class ZoomControls extends HookWidget {
|
|||||||
this.decreaseIcon = const Icon(SpotubeIcons.zoomOut),
|
this.decreaseIcon = const Icon(SpotubeIcons.zoomOut),
|
||||||
this.direction = Axis.horizontal,
|
this.direction = Axis.horizontal,
|
||||||
this.unit = "%",
|
this.unit = "%",
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -32,10 +32,10 @@ class PlayerView extends HookConsumerWidget {
|
|||||||
final PanelController panelController;
|
final PanelController panelController;
|
||||||
final ScrollController scrollController;
|
final ScrollController scrollController;
|
||||||
const PlayerView({
|
const PlayerView({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.panelController,
|
required this.panelController,
|
||||||
required this.scrollController,
|
required this.scrollController,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import 'package:spotube/collections/spotube_icons.dart';
|
|||||||
import 'package:spotube/components/player/sibling_tracks_sheet.dart';
|
import 'package:spotube/components/player/sibling_tracks_sheet.dart';
|
||||||
import 'package:spotube/components/shared/adaptive/adaptive_pop_sheet_list.dart';
|
import 'package:spotube/components/shared/adaptive/adaptive_pop_sheet_list.dart';
|
||||||
import 'package:spotube/components/shared/heart_button.dart';
|
import 'package:spotube/components/shared/heart_button.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';
|
||||||
import 'package:spotube/models/local_track.dart';
|
import 'package:spotube/models/local_track.dart';
|
||||||
@ -29,8 +28,8 @@ class PlayerActions extends HookConsumerWidget {
|
|||||||
this.floatingQueue = true,
|
this.floatingQueue = true,
|
||||||
this.showQueue = true,
|
this.showQueue = true,
|
||||||
this.extraActions,
|
this.extraActions,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
final logger = getLogger(PlayerActions);
|
final logger = getLogger(PlayerActions);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -21,8 +21,8 @@ class PlayerControls extends HookConsumerWidget {
|
|||||||
PlayerControls({
|
PlayerControls({
|
||||||
this.palette,
|
this.palette,
|
||||||
this.compact = false,
|
this.compact = false,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
final logger = getLogger(PlayerControls);
|
final logger = getLogger(PlayerControls);
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ class PlayerControls extends HookConsumerWidget {
|
|||||||
onPressed: playlist.isFetching == true
|
onPressed: playlist.isFetching == true
|
||||||
? null
|
? null
|
||||||
: () async {
|
: () async {
|
||||||
switch (await audioPlayer.loopMode) {
|
switch (audioPlayer.loopMode) {
|
||||||
case PlaybackLoopMode.all:
|
case PlaybackLoopMode.all:
|
||||||
audioPlayer
|
audioPlayer
|
||||||
.setLoopMode(PlaybackLoopMode.one);
|
.setLoopMode(PlaybackLoopMode.one);
|
||||||
|
|||||||
@ -19,8 +19,8 @@ class PlayerOverlay extends HookConsumerWidget {
|
|||||||
|
|
||||||
const PlayerOverlay({
|
const PlayerOverlay({
|
||||||
required this.albumArt,
|
required this.albumArt,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -22,8 +22,8 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
final bool floating;
|
final bool floating;
|
||||||
const PlayerQueue({
|
const PlayerQueue({
|
||||||
this.floating = true,
|
this.floating = true,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -13,8 +13,7 @@ import 'package:spotube/utils/type_conversion_utils.dart';
|
|||||||
class PlayerTrackDetails extends HookConsumerWidget {
|
class PlayerTrackDetails extends HookConsumerWidget {
|
||||||
final String? albumArt;
|
final String? albumArt;
|
||||||
final Color? color;
|
final Color? color;
|
||||||
const PlayerTrackDetails({Key? key, this.albumArt, this.color})
|
const PlayerTrackDetails({super.key, this.albumArt, this.color});
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -45,9 +45,9 @@ final sourceInfoToIconMap = {
|
|||||||
class SiblingTracksSheet extends HookConsumerWidget {
|
class SiblingTracksSheet extends HookConsumerWidget {
|
||||||
final bool floating;
|
final bool floating;
|
||||||
const SiblingTracksSheet({
|
const SiblingTracksSheet({
|
||||||
Key? key,
|
super.key,
|
||||||
this.floating = true,
|
this.floating = true,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import 'package:spotube/provider/volume_provider.dart';
|
|||||||
class VolumeSlider extends HookConsumerWidget {
|
class VolumeSlider extends HookConsumerWidget {
|
||||||
final bool fullWidth;
|
final bool fullWidth;
|
||||||
const VolumeSlider({
|
const VolumeSlider({
|
||||||
Key? key,
|
super.key,
|
||||||
this.fullWidth = false,
|
this.fullWidth = false,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -16,8 +16,8 @@ class PlaylistCard extends HookConsumerWidget {
|
|||||||
final PlaylistSimple playlist;
|
final PlaylistSimple playlist;
|
||||||
const PlaylistCard(
|
const PlaylistCard(
|
||||||
this.playlist, {
|
this.playlist, {
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlistQueue = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlistQueue = ref.watch(ProxyPlaylistNotifier.provider);
|
||||||
|
|||||||
@ -24,10 +24,10 @@ class PlaylistCreateDialog extends HookConsumerWidget {
|
|||||||
final List<String> trackIds;
|
final List<String> trackIds;
|
||||||
final String? playlistId;
|
final String? playlistId;
|
||||||
PlaylistCreateDialog({
|
PlaylistCreateDialog({
|
||||||
Key? key,
|
super.key,
|
||||||
this.trackIds = const [],
|
this.trackIds = const [],
|
||||||
this.playlistId,
|
this.playlistId,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
final formKey = GlobalKey<FormState>();
|
final formKey = GlobalKey<FormState>();
|
||||||
|
|
||||||
@ -275,7 +275,7 @@ class PlaylistCreateDialog extends HookConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PlaylistCreateDialogButton extends HookConsumerWidget {
|
class PlaylistCreateDialogButton extends HookConsumerWidget {
|
||||||
const PlaylistCreateDialogButton({Key? key}) : super(key: key);
|
const PlaylistCreateDialogButton({super.key});
|
||||||
|
|
||||||
showPlaylistDialog(BuildContext context, SpotifyApi spotify) {
|
showPlaylistDialog(BuildContext context, SpotifyApi spotify) {
|
||||||
showDialog(
|
showDialog(
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import 'package:spotube/utils/platform.dart';
|
|||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
||||||
|
|
||||||
class BottomPlayer extends HookConsumerWidget {
|
class BottomPlayer extends HookConsumerWidget {
|
||||||
BottomPlayer({Key? key}) : super(key: key);
|
BottomPlayer({super.key});
|
||||||
|
|
||||||
final logger = getLogger(BottomPlayer);
|
final logger = getLogger(BottomPlayer);
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -31,8 +31,8 @@ class Sidebar extends HookConsumerWidget {
|
|||||||
required this.selectedIndex,
|
required this.selectedIndex,
|
||||||
required this.onSelectedIndexChanged,
|
required this.onSelectedIndexChanged,
|
||||||
required this.child,
|
required this.child,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
static Widget brandLogo() {
|
static Widget brandLogo() {
|
||||||
return Container(
|
return Container(
|
||||||
@ -195,7 +195,7 @@ class Sidebar extends HookConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SidebarHeader extends HookWidget {
|
class SidebarHeader extends HookWidget {
|
||||||
const SidebarHeader({Key? key}) : super(key: key);
|
const SidebarHeader({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -234,8 +234,8 @@ class SidebarHeader extends HookWidget {
|
|||||||
|
|
||||||
class SidebarFooter extends HookConsumerWidget {
|
class SidebarFooter extends HookConsumerWidget {
|
||||||
const SidebarFooter({
|
const SidebarFooter({
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -23,8 +23,8 @@ class SpotubeNavigationBar extends HookConsumerWidget {
|
|||||||
const SpotubeNavigationBar({
|
const SpotubeNavigationBar({
|
||||||
required this.selectedIndex,
|
required this.selectedIndex,
|
||||||
required this.onSelectedIndexChanged,
|
required this.onSelectedIndexChanged,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import 'package:system_theme/system_theme.dart';
|
|||||||
class SpotubeColor extends Color {
|
class SpotubeColor extends Color {
|
||||||
final String name;
|
final String name;
|
||||||
|
|
||||||
const SpotubeColor(int color, {required this.name}) : super(color);
|
const SpotubeColor(super.color, {required this.name});
|
||||||
|
|
||||||
const SpotubeColor.from(int value, {required this.name}) : super(value);
|
const SpotubeColor.from(super.value, {required this.name});
|
||||||
|
|
||||||
factory SpotubeColor.fromString(String string) {
|
factory SpotubeColor.fromString(String string) {
|
||||||
final slices = string.split(":");
|
final slices = string.split(":");
|
||||||
@ -44,7 +44,7 @@ final Set<SpotubeColor> colorsMap = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
class ColorSchemePickerDialog extends HookConsumerWidget {
|
class ColorSchemePickerDialog extends HookConsumerWidget {
|
||||||
const ColorSchemePickerDialog({Key? key}) : super(key: key);
|
const ColorSchemePickerDialog({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
@ -119,8 +119,8 @@ class ColorTile extends StatelessWidget {
|
|||||||
this.onPressed,
|
this.onPressed,
|
||||||
this.tooltip = "",
|
this.tooltip = "",
|
||||||
this.isCompact = false,
|
this.isCompact = false,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
factory ColorTile.compact({
|
factory ColorTile.compact({
|
||||||
required Color color,
|
required Color color,
|
||||||
|
|||||||
@ -12,13 +12,13 @@ class Action extends StatelessWidget {
|
|||||||
final bool isExpanded;
|
final bool isExpanded;
|
||||||
final Color? backgroundColor;
|
final Color? backgroundColor;
|
||||||
const Action({
|
const Action({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.icon,
|
required this.icon,
|
||||||
required this.text,
|
required this.text,
|
||||||
required this.onPressed,
|
required this.onPressed,
|
||||||
this.isExpanded = true,
|
this.isExpanded = true,
|
||||||
this.backgroundColor,
|
this.backgroundColor,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||||||
|
|
||||||
class AnimateGradient extends HookWidget {
|
class AnimateGradient extends HookWidget {
|
||||||
const AnimateGradient({
|
const AnimateGradient({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.primaryColors,
|
required this.primaryColors,
|
||||||
required this.secondaryColors,
|
required this.secondaryColors,
|
||||||
this.child,
|
this.child,
|
||||||
@ -17,8 +17,7 @@ class AnimateGradient extends HookWidget {
|
|||||||
this.reverse = true,
|
this.reverse = true,
|
||||||
}) : assert(primaryColors.length >= 2),
|
}) : assert(primaryColors.length >= 2),
|
||||||
assert(primaryColors.length == secondaryColors.length),
|
assert(primaryColors.length == secondaryColors.length),
|
||||||
_controller = controller,
|
_controller = controller;
|
||||||
super(key: key);
|
|
||||||
|
|
||||||
/// [controller]: pass this to have a fine control over the [Animation]
|
/// [controller]: pass this to have a fine control over the [Animation]
|
||||||
final AnimationController? _controller;
|
final AnimationController? _controller;
|
||||||
|
|||||||
@ -11,12 +11,12 @@ class CompactSearch extends HookWidget {
|
|||||||
final Color? iconColor;
|
final Color? iconColor;
|
||||||
|
|
||||||
const CompactSearch({
|
const CompactSearch({
|
||||||
Key? key,
|
super.key,
|
||||||
this.onChanged,
|
this.onChanged,
|
||||||
this.placeholder = "Search...",
|
this.placeholder = "Search...",
|
||||||
this.icon = SpotubeIcons.search,
|
this.icon = SpotubeIcons.search,
|
||||||
this.iconColor,
|
this.iconColor,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import 'package:spotube/extensions/constrains.dart';
|
|||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
|
|
||||||
class ConfirmDownloadDialog extends StatelessWidget {
|
class ConfirmDownloadDialog extends StatelessWidget {
|
||||||
const ConfirmDownloadDialog({Key? key}) : super(key: key);
|
const ConfirmDownloadDialog({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -82,7 +82,7 @@ class ConfirmDownloadDialog extends StatelessWidget {
|
|||||||
|
|
||||||
class BulletPoint extends StatelessWidget {
|
class BulletPoint extends StatelessWidget {
|
||||||
final String text;
|
final String text;
|
||||||
const BulletPoint(this.text, {Key? key}) : super(key: key);
|
const BulletPoint(this.text, {super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import 'package:spotube/extensions/context.dart';
|
|||||||
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
||||||
|
|
||||||
class PipedDownDialog extends HookConsumerWidget {
|
class PipedDownDialog extends HookConsumerWidget {
|
||||||
const PipedDownDialog({Key? key}) : super(key: key);
|
const PipedDownDialog({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -19,8 +19,8 @@ class PlaylistAddTrackDialog extends HookConsumerWidget {
|
|||||||
const PlaylistAddTrackDialog({
|
const PlaylistAddTrackDialog({
|
||||||
required this.tracks,
|
required this.tracks,
|
||||||
required this.openFromPlaylist,
|
required this.openFromPlaylist,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -8,8 +8,7 @@ final replaceDownloadedFileState = StateProvider<bool?>((ref) => null);
|
|||||||
|
|
||||||
class ReplaceDownloadedDialog extends ConsumerWidget {
|
class ReplaceDownloadedDialog extends ConsumerWidget {
|
||||||
final Track track;
|
final Track track;
|
||||||
const ReplaceDownloadedDialog({required this.track, Key? key})
|
const ReplaceDownloadedDialog({required this.track, super.key});
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -13,9 +13,9 @@ import 'package:spotube/extensions/duration.dart';
|
|||||||
class TrackDetailsDialog extends HookWidget {
|
class TrackDetailsDialog extends HookWidget {
|
||||||
final Track track;
|
final Track track;
|
||||||
const TrackDetailsDialog({
|
const TrackDetailsDialog({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.track,
|
required this.track,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -10,12 +10,12 @@ class ExpandableSearchField extends StatelessWidget {
|
|||||||
final FocusNode searchFocus;
|
final FocusNode searchFocus;
|
||||||
|
|
||||||
const ExpandableSearchField({
|
const ExpandableSearchField({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.isFiltering,
|
required this.isFiltering,
|
||||||
required this.onChangeFiltering,
|
required this.onChangeFiltering,
|
||||||
required this.searchController,
|
required this.searchController,
|
||||||
required this.searchFocus,
|
required this.searchFocus,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -60,12 +60,12 @@ class ExpandableSearchButton extends StatelessWidget {
|
|||||||
final ValueChanged<bool>? onPressed;
|
final ValueChanged<bool>? onPressed;
|
||||||
|
|
||||||
const ExpandableSearchButton({
|
const ExpandableSearchButton({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.isFiltering,
|
required this.isFiltering,
|
||||||
required this.searchFocus,
|
required this.searchFocus,
|
||||||
this.icon = const Icon(SpotubeIcons.filter),
|
this.icon = const Icon(SpotubeIcons.filter),
|
||||||
this.onPressed,
|
this.onPressed,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import 'package:spotube/utils/service_utils.dart';
|
|||||||
class AnonymousFallback extends ConsumerWidget {
|
class AnonymousFallback extends ConsumerWidget {
|
||||||
final Widget? child;
|
final Widget? child;
|
||||||
const AnonymousFallback({
|
const AnonymousFallback({
|
||||||
Key? key,
|
super.key,
|
||||||
this.child,
|
this.child,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import 'package:spotube/collections/assets.gen.dart';
|
|||||||
|
|
||||||
class NotFound extends StatelessWidget {
|
class NotFound extends StatelessWidget {
|
||||||
final bool vertical;
|
final bool vertical;
|
||||||
const NotFound({Key? key, this.vertical = false}) : super(key: key);
|
const NotFound({super.key, this.vertical = false});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -23,8 +23,8 @@ class HeartButton extends HookConsumerWidget {
|
|||||||
this.color,
|
this.color,
|
||||||
this.tooltip,
|
this.tooltip,
|
||||||
this.icon,
|
this.icon,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
@ -134,9 +134,9 @@ UseTrackToggleLike useTrackToggleLike(Track track, WidgetRef ref) {
|
|||||||
class TrackHeartButton extends HookConsumerWidget {
|
class TrackHeartButton extends HookConsumerWidget {
|
||||||
final Track track;
|
final Track track;
|
||||||
const TrackHeartButton({
|
const TrackHeartButton({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.track,
|
required this.track,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
@ -168,10 +168,10 @@ class PlaylistHeartButton extends HookConsumerWidget {
|
|||||||
|
|
||||||
const PlaylistHeartButton({
|
const PlaylistHeartButton({
|
||||||
required this.playlist,
|
required this.playlist,
|
||||||
Key? key,
|
super.key,
|
||||||
this.icon,
|
this.icon,
|
||||||
this.onData,
|
this.onData,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
@ -217,8 +217,8 @@ class AlbumHeartButton extends HookConsumerWidget {
|
|||||||
|
|
||||||
const AlbumHeartButton({
|
const AlbumHeartButton({
|
||||||
required this.album,
|
required this.album,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -7,8 +7,8 @@ class HoverBuilder extends HookWidget {
|
|||||||
const HoverBuilder({
|
const HoverBuilder({
|
||||||
required this.builder,
|
required this.builder,
|
||||||
this.permanentState,
|
this.permanentState,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -20,8 +20,8 @@ class UniversalImage extends HookWidget {
|
|||||||
this.placeholder,
|
this.placeholder,
|
||||||
this.fit,
|
this.fit,
|
||||||
this.scale = 1,
|
this.scale = 1,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
static ImageProvider imageProvider(
|
static ImageProvider imageProvider(
|
||||||
String path, {
|
String path, {
|
||||||
|
|||||||
@ -11,13 +11,13 @@ class AnchorButton<T> extends HookWidget {
|
|||||||
|
|
||||||
const AnchorButton(
|
const AnchorButton(
|
||||||
this.text, {
|
this.text, {
|
||||||
Key? key,
|
super.key,
|
||||||
this.onTap,
|
this.onTap,
|
||||||
this.textAlign,
|
this.textAlign,
|
||||||
this.overflow,
|
this.overflow,
|
||||||
this.maxLines,
|
this.maxLines,
|
||||||
this.style = const TextStyle(),
|
this.style = const TextStyle(),
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -13,12 +13,12 @@ class Hyperlink extends StatelessWidget {
|
|||||||
const Hyperlink(
|
const Hyperlink(
|
||||||
this.text,
|
this.text,
|
||||||
this.url, {
|
this.url, {
|
||||||
Key? key,
|
super.key,
|
||||||
this.textAlign,
|
this.textAlign,
|
||||||
this.overflow,
|
this.overflow,
|
||||||
this.style = const TextStyle(),
|
this.style = const TextStyle(),
|
||||||
this.maxLines,
|
this.maxLines,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -15,14 +15,14 @@ class LinkText<T> extends StatelessWidget {
|
|||||||
const LinkText(
|
const LinkText(
|
||||||
this.text,
|
this.text,
|
||||||
this.route, {
|
this.route, {
|
||||||
Key? key,
|
super.key,
|
||||||
this.textAlign,
|
this.textAlign,
|
||||||
this.extra,
|
this.extra,
|
||||||
this.overflow,
|
this.overflow,
|
||||||
this.style = const TextStyle(),
|
this.style = const TextStyle(),
|
||||||
this.maxLines,
|
this.maxLines,
|
||||||
this.push = false,
|
this.push = false,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -27,7 +27,7 @@ class PageWindowTitleBar extends StatefulHookConsumerWidget
|
|||||||
final Widget? title;
|
final Widget? title;
|
||||||
|
|
||||||
const PageWindowTitleBar({
|
const PageWindowTitleBar({
|
||||||
Key? key,
|
super.key,
|
||||||
this.actions,
|
this.actions,
|
||||||
this.title,
|
this.title,
|
||||||
this.toolbarOpacity = 1,
|
this.toolbarOpacity = 1,
|
||||||
@ -42,7 +42,7 @@ class PageWindowTitleBar extends StatefulHookConsumerWidget
|
|||||||
this.titleTextStyle,
|
this.titleTextStyle,
|
||||||
this.titleWidth,
|
this.titleWidth,
|
||||||
this.toolbarTextStyle,
|
this.toolbarTextStyle,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Size get preferredSize => const Size.fromHeight(kToolbarHeight);
|
Size get preferredSize => const Size.fromHeight(kToolbarHeight);
|
||||||
@ -107,9 +107,9 @@ class _PageWindowTitleBarState extends ConsumerState<PageWindowTitleBar> {
|
|||||||
class WindowTitleBarButtons extends HookConsumerWidget {
|
class WindowTitleBarButtons extends HookConsumerWidget {
|
||||||
final Color? foregroundColor;
|
final Color? foregroundColor;
|
||||||
const WindowTitleBarButtons({
|
const WindowTitleBarButtons({
|
||||||
Key? key,
|
super.key,
|
||||||
this.foregroundColor,
|
this.foregroundColor,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
@ -277,14 +277,13 @@ class WindowButton extends StatelessWidget {
|
|||||||
final VoidCallback? onPressed;
|
final VoidCallback? onPressed;
|
||||||
|
|
||||||
WindowButton(
|
WindowButton(
|
||||||
{Key? key,
|
{super.key,
|
||||||
WindowButtonColors? colors,
|
WindowButtonColors? colors,
|
||||||
this.builder,
|
this.builder,
|
||||||
@required this.iconBuilder,
|
@required this.iconBuilder,
|
||||||
this.padding,
|
this.padding,
|
||||||
this.onPressed,
|
this.onPressed,
|
||||||
this.animate = false})
|
this.animate = false}) {
|
||||||
: super(key: key) {
|
|
||||||
this.colors = colors ?? _defaultButtonColors;
|
this.colors = colors ?? _defaultButtonColors;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,49 +349,40 @@ class WindowButton extends StatelessWidget {
|
|||||||
|
|
||||||
class MinimizeWindowButton extends WindowButton {
|
class MinimizeWindowButton extends WindowButton {
|
||||||
MinimizeWindowButton(
|
MinimizeWindowButton(
|
||||||
{Key? key,
|
{super.key,
|
||||||
WindowButtonColors? colors,
|
super.colors,
|
||||||
VoidCallback? onPressed,
|
super.onPressed,
|
||||||
bool? animate})
|
bool? animate})
|
||||||
: super(
|
: super(
|
||||||
key: key,
|
|
||||||
colors: colors,
|
|
||||||
animate: animate ?? false,
|
animate: animate ?? false,
|
||||||
iconBuilder: (buttonContext) =>
|
iconBuilder: (buttonContext) =>
|
||||||
MinimizeIcon(color: buttonContext.iconColor),
|
MinimizeIcon(color: buttonContext.iconColor),
|
||||||
onPressed: onPressed,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
class MaximizeWindowButton extends WindowButton {
|
class MaximizeWindowButton extends WindowButton {
|
||||||
MaximizeWindowButton(
|
MaximizeWindowButton(
|
||||||
{Key? key,
|
{super.key,
|
||||||
WindowButtonColors? colors,
|
super.colors,
|
||||||
VoidCallback? onPressed,
|
super.onPressed,
|
||||||
bool? animate})
|
bool? animate})
|
||||||
: super(
|
: super(
|
||||||
key: key,
|
|
||||||
colors: colors,
|
|
||||||
animate: animate ?? false,
|
animate: animate ?? false,
|
||||||
iconBuilder: (buttonContext) =>
|
iconBuilder: (buttonContext) =>
|
||||||
MaximizeIcon(color: buttonContext.iconColor),
|
MaximizeIcon(color: buttonContext.iconColor),
|
||||||
onPressed: onPressed,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
class RestoreWindowButton extends WindowButton {
|
class RestoreWindowButton extends WindowButton {
|
||||||
RestoreWindowButton(
|
RestoreWindowButton(
|
||||||
{Key? key,
|
{super.key,
|
||||||
WindowButtonColors? colors,
|
super.colors,
|
||||||
VoidCallback? onPressed,
|
super.onPressed,
|
||||||
bool? animate})
|
bool? animate})
|
||||||
: super(
|
: super(
|
||||||
key: key,
|
|
||||||
colors: colors,
|
|
||||||
animate: animate ?? false,
|
animate: animate ?? false,
|
||||||
iconBuilder: (buttonContext) =>
|
iconBuilder: (buttonContext) =>
|
||||||
RestoreIcon(color: buttonContext.iconColor),
|
RestoreIcon(color: buttonContext.iconColor),
|
||||||
onPressed: onPressed,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -404,17 +394,15 @@ final _defaultCloseButtonColors = WindowButtonColors(
|
|||||||
|
|
||||||
class CloseWindowButton extends WindowButton {
|
class CloseWindowButton extends WindowButton {
|
||||||
CloseWindowButton(
|
CloseWindowButton(
|
||||||
{Key? key,
|
{super.key,
|
||||||
WindowButtonColors? colors,
|
WindowButtonColors? colors,
|
||||||
VoidCallback? onPressed,
|
super.onPressed,
|
||||||
bool? animate})
|
bool? animate})
|
||||||
: super(
|
: super(
|
||||||
key: key,
|
|
||||||
colors: colors ?? _defaultCloseButtonColors,
|
colors: colors ?? _defaultCloseButtonColors,
|
||||||
animate: animate ?? false,
|
animate: animate ?? false,
|
||||||
iconBuilder: (buttonContext) =>
|
iconBuilder: (buttonContext) =>
|
||||||
CloseIcon(color: buttonContext.iconColor),
|
CloseIcon(color: buttonContext.iconColor),
|
||||||
onPressed: onPressed,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,7 +411,7 @@ class CloseWindowButton extends WindowButton {
|
|||||||
/// Close
|
/// Close
|
||||||
class CloseIcon extends StatelessWidget {
|
class CloseIcon extends StatelessWidget {
|
||||||
final Color color;
|
final Color color;
|
||||||
const CloseIcon({Key? key, required this.color}) : super(key: key);
|
const CloseIcon({super.key, required this.color});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Align(
|
Widget build(BuildContext context) => Align(
|
||||||
alignment: Alignment.topLeft,
|
alignment: Alignment.topLeft,
|
||||||
@ -444,13 +432,13 @@ class CloseIcon extends StatelessWidget {
|
|||||||
/// Maximize
|
/// Maximize
|
||||||
class MaximizeIcon extends StatelessWidget {
|
class MaximizeIcon extends StatelessWidget {
|
||||||
final Color color;
|
final Color color;
|
||||||
const MaximizeIcon({Key? key, required this.color}) : super(key: key);
|
const MaximizeIcon({super.key, required this.color});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => _AlignedPaint(_MaximizePainter(color));
|
Widget build(BuildContext context) => _AlignedPaint(_MaximizePainter(color));
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MaximizePainter extends _IconPainter {
|
class _MaximizePainter extends _IconPainter {
|
||||||
_MaximizePainter(Color color) : super(color);
|
_MaximizePainter(super.color);
|
||||||
@override
|
@override
|
||||||
void paint(Canvas canvas, Size size) {
|
void paint(Canvas canvas, Size size) {
|
||||||
Paint p = getPaint(color);
|
Paint p = getPaint(color);
|
||||||
@ -462,15 +450,15 @@ class _MaximizePainter extends _IconPainter {
|
|||||||
class RestoreIcon extends StatelessWidget {
|
class RestoreIcon extends StatelessWidget {
|
||||||
final Color color;
|
final Color color;
|
||||||
const RestoreIcon({
|
const RestoreIcon({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.color,
|
required this.color,
|
||||||
}) : super(key: key);
|
});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => _AlignedPaint(_RestorePainter(color));
|
Widget build(BuildContext context) => _AlignedPaint(_RestorePainter(color));
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RestorePainter extends _IconPainter {
|
class _RestorePainter extends _IconPainter {
|
||||||
_RestorePainter(Color color) : super(color);
|
_RestorePainter(super.color);
|
||||||
@override
|
@override
|
||||||
void paint(Canvas canvas, Size size) {
|
void paint(Canvas canvas, Size size) {
|
||||||
Paint p = getPaint(color);
|
Paint p = getPaint(color);
|
||||||
@ -487,13 +475,13 @@ class _RestorePainter extends _IconPainter {
|
|||||||
/// Minimize
|
/// Minimize
|
||||||
class MinimizeIcon extends StatelessWidget {
|
class MinimizeIcon extends StatelessWidget {
|
||||||
final Color color;
|
final Color color;
|
||||||
const MinimizeIcon({Key? key, required this.color}) : super(key: key);
|
const MinimizeIcon({super.key, required this.color});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => _AlignedPaint(_MinimizePainter(color));
|
Widget build(BuildContext context) => _AlignedPaint(_MinimizePainter(color));
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MinimizePainter extends _IconPainter {
|
class _MinimizePainter extends _IconPainter {
|
||||||
_MinimizePainter(Color color) : super(color);
|
_MinimizePainter(super.color);
|
||||||
@override
|
@override
|
||||||
void paint(Canvas canvas, Size size) {
|
void paint(Canvas canvas, Size size) {
|
||||||
Paint p = getPaint(color);
|
Paint p = getPaint(color);
|
||||||
@ -512,7 +500,7 @@ abstract class _IconPainter extends CustomPainter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _AlignedPaint extends StatelessWidget {
|
class _AlignedPaint extends StatelessWidget {
|
||||||
const _AlignedPaint(this.painter, {Key? key}) : super(key: key);
|
const _AlignedPaint(this.painter);
|
||||||
final CustomPainter painter;
|
final CustomPainter painter;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -547,8 +535,7 @@ T? _ambiguate<T>(T? value) => value;
|
|||||||
class MouseStateBuilder extends StatefulWidget {
|
class MouseStateBuilder extends StatefulWidget {
|
||||||
final MouseStateBuilderCB builder;
|
final MouseStateBuilderCB builder;
|
||||||
final VoidCallback? onPressed;
|
final VoidCallback? onPressed;
|
||||||
const MouseStateBuilder({Key? key, required this.builder, this.onPressed})
|
const MouseStateBuilder({super.key, required this.builder, this.onPressed});
|
||||||
: super(key: key);
|
|
||||||
@override
|
@override
|
||||||
_MouseStateBuilderState createState() => _MouseStateBuilderState();
|
_MouseStateBuilderState createState() => _MouseStateBuilderState();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,8 +47,7 @@ class ForceDraggableWidgetRenderBox extends RenderPointerListener {
|
|||||||
/// To make [ForceDraggableWidget] work in [Scrollable] widgets
|
/// To make [ForceDraggableWidget] work in [Scrollable] widgets
|
||||||
class PanelScrollPhysics extends ScrollPhysics {
|
class PanelScrollPhysics extends ScrollPhysics {
|
||||||
final PanelController controller;
|
final PanelController controller;
|
||||||
const PanelScrollPhysics({required this.controller, ScrollPhysics? parent})
|
const PanelScrollPhysics({required this.controller, super.parent});
|
||||||
: super(parent: parent);
|
|
||||||
@override
|
@override
|
||||||
PanelScrollPhysics applyTo(ScrollPhysics? ancestor) {
|
PanelScrollPhysics applyTo(ScrollPhysics? ancestor) {
|
||||||
return PanelScrollPhysics(
|
return PanelScrollPhysics(
|
||||||
|
|||||||
@ -146,7 +146,7 @@ class SlidingUpPanel extends StatefulWidget {
|
|||||||
final BoxDecoration? panelDecoration;
|
final BoxDecoration? panelDecoration;
|
||||||
|
|
||||||
const SlidingUpPanel(
|
const SlidingUpPanel(
|
||||||
{Key? key,
|
{super.key,
|
||||||
this.body,
|
this.body,
|
||||||
this.collapsed,
|
this.collapsed,
|
||||||
this.minHeight = 100.0,
|
this.minHeight = 100.0,
|
||||||
@ -176,8 +176,7 @@ class SlidingUpPanel extends StatefulWidget {
|
|||||||
this.panelBuilder})
|
this.panelBuilder})
|
||||||
: assert(panelBuilder != null),
|
: assert(panelBuilder != null),
|
||||||
assert(0 <= backdropOpacity && backdropOpacity <= 1.0),
|
assert(0 <= backdropOpacity && backdropOpacity <= 1.0),
|
||||||
assert(snapPoint == null || 0 < snapPoint && snapPoint < 1.0),
|
assert(snapPoint == null || 0 < snapPoint && snapPoint < 1.0);
|
||||||
super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
SlidingUpPanelState createState() => SlidingUpPanelState();
|
SlidingUpPanelState createState() => SlidingUpPanelState();
|
||||||
|
|||||||
@ -43,8 +43,8 @@ class PlaybuttonCard extends HookWidget {
|
|||||||
this.onAddToQueuePressed,
|
this.onAddToQueuePressed,
|
||||||
this.onTap,
|
this.onTap,
|
||||||
this.isOwner = false,
|
this.isOwner = false,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import 'package:gap/gap.dart';
|
|||||||
import 'package:skeletonizer/skeletonizer.dart';
|
import 'package:skeletonizer/skeletonizer.dart';
|
||||||
|
|
||||||
class ShimmerLyrics extends HookWidget {
|
class ShimmerLyrics extends HookWidget {
|
||||||
const ShimmerLyrics({Key? key}) : super(key: key);
|
const ShimmerLyrics({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -11,8 +11,8 @@ class SortTracksDropdown extends StatelessWidget {
|
|||||||
const SortTracksDropdown({
|
const SortTracksDropdown({
|
||||||
this.onChanged,
|
this.onChanged,
|
||||||
this.value,
|
this.value,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import 'package:spotube/hooks/utils/use_brightness_value.dart';
|
|||||||
|
|
||||||
class ThemedButtonsTabBar extends HookWidget implements PreferredSizeWidget {
|
class ThemedButtonsTabBar extends HookWidget implements PreferredSizeWidget {
|
||||||
final List<Widget> tabs;
|
final List<Widget> tabs;
|
||||||
const ThemedButtonsTabBar({Key? key, required this.tabs}) : super(key: key);
|
const ThemedButtonsTabBar({super.key, required this.tabs});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -53,13 +53,13 @@ class TrackOptions extends HookConsumerWidget {
|
|||||||
final ObjectRef<ValueChanged<RelativeRect>?>? showMenuCbRef;
|
final ObjectRef<ValueChanged<RelativeRect>?>? showMenuCbRef;
|
||||||
final Widget? icon;
|
final Widget? icon;
|
||||||
const TrackOptions({
|
const TrackOptions({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.track,
|
required this.track,
|
||||||
this.showMenuCbRef,
|
this.showMenuCbRef,
|
||||||
this.userPlaylist = false,
|
this.userPlaylist = false,
|
||||||
this.playlistId,
|
this.playlistId,
|
||||||
this.icon,
|
this.icon,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
void actionShare(BuildContext context, Track track) {
|
void actionShare(BuildContext context, Track track) {
|
||||||
final data = "https://open.spotify.com/track/${track.id}";
|
final data = "https://open.spotify.com/track/${track.id}";
|
||||||
|
|||||||
@ -32,7 +32,7 @@ class TrackTile extends HookConsumerWidget {
|
|||||||
final List<Widget>? leadingActions;
|
final List<Widget>? leadingActions;
|
||||||
|
|
||||||
const TrackTile({
|
const TrackTile({
|
||||||
Key? key,
|
super.key,
|
||||||
this.index,
|
this.index,
|
||||||
required this.track,
|
required this.track,
|
||||||
this.selected = false,
|
this.selected = false,
|
||||||
@ -42,7 +42,7 @@ class TrackTile extends HookConsumerWidget {
|
|||||||
this.userPlaylist = false,
|
this.userPlaylist = false,
|
||||||
this.playlistId,
|
this.playlistId,
|
||||||
this.leadingActions,
|
this.leadingActions,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -19,7 +19,7 @@ import 'package:spotube/utils/service_utils.dart';
|
|||||||
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
|
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
|
||||||
|
|
||||||
class TrackViewBodySection extends HookConsumerWidget {
|
class TrackViewBodySection extends HookConsumerWidget {
|
||||||
const TrackViewBodySection({Key? key}) : super(key: key);
|
const TrackViewBodySection({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -13,10 +13,10 @@ class TrackViewBodyHeaders extends HookConsumerWidget {
|
|||||||
final FocusNode searchFocus;
|
final FocusNode searchFocus;
|
||||||
|
|
||||||
const TrackViewBodyHeaders({
|
const TrackViewBodyHeaders({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.isFiltering,
|
required this.isFiltering,
|
||||||
required this.searchFocus,
|
required this.searchFocus,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import 'package:spotube/provider/user_preferences/user_preferences_provider.dart
|
|||||||
import 'package:spotube/provider/user_preferences/user_preferences_state.dart';
|
import 'package:spotube/provider/user_preferences/user_preferences_state.dart';
|
||||||
|
|
||||||
class TrackViewBodyOptions extends HookConsumerWidget {
|
class TrackViewBodyOptions extends HookConsumerWidget {
|
||||||
const TrackViewBodyOptions({Key? key}) : super(key: key);
|
const TrackViewBodyOptions({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import 'package:spotube/extensions/constrains.dart';
|
|||||||
import 'package:spotube/hooks/utils/use_palette_color.dart';
|
import 'package:spotube/hooks/utils/use_palette_color.dart';
|
||||||
|
|
||||||
class TrackViewFlexHeader extends HookConsumerWidget {
|
class TrackViewFlexHeader extends HookConsumerWidget {
|
||||||
const TrackViewFlexHeader({Key? key}) : super(key: key);
|
const TrackViewFlexHeader({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
|
|
||||||
class TrackViewHeaderActions extends HookConsumerWidget {
|
class TrackViewHeaderActions extends HookConsumerWidget {
|
||||||
const TrackViewHeaderActions({Key? key}) : super(key: key);
|
const TrackViewHeaderActions({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -15,10 +15,10 @@ class TrackViewHeaderButtons extends HookConsumerWidget {
|
|||||||
final PaletteColor color;
|
final PaletteColor color;
|
||||||
final bool compact;
|
final bool compact;
|
||||||
const TrackViewHeaderButtons({
|
const TrackViewHeaderButtons({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.color,
|
required this.color,
|
||||||
this.compact = false,
|
this.compact = false,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import 'package:spotube/components/shared/tracks_view/sections/body/track_view_b
|
|||||||
import 'package:spotube/components/shared/tracks_view/track_view_props.dart';
|
import 'package:spotube/components/shared/tracks_view/track_view_props.dart';
|
||||||
|
|
||||||
class TrackView extends HookConsumerWidget {
|
class TrackView extends HookConsumerWidget {
|
||||||
const TrackView({Key? key}) : super(key: key);
|
const TrackView({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -11,12 +11,12 @@ class Waypoint extends HookWidget {
|
|||||||
final bool isGrid;
|
final bool isGrid;
|
||||||
|
|
||||||
const Waypoint({
|
const Waypoint({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.controller,
|
required this.controller,
|
||||||
this.isGrid = false,
|
this.isGrid = false,
|
||||||
this.onTouchEdge,
|
this.onTouchEdge,
|
||||||
this.child,
|
this.child,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -39,8 +39,8 @@ class _AutoScrollControllerHook extends Hook<AutoScrollController> {
|
|||||||
this.copyTagsFrom,
|
this.copyTagsFrom,
|
||||||
this.suggestedRowHeight,
|
this.suggestedRowHeight,
|
||||||
this.debugLabel,
|
this.debugLabel,
|
||||||
List<Object?>? keys,
|
super.keys,
|
||||||
}) : super(keys: keys);
|
});
|
||||||
|
|
||||||
final double initialScrollOffset;
|
final double initialScrollOffset;
|
||||||
final bool keepScrollOffset;
|
final bool keepScrollOffset;
|
||||||
|
|||||||
@ -44,8 +44,8 @@ class _PackageInfoHook<PageKeyType, ItemType> extends Hook<PackageInfo> {
|
|||||||
required this.version,
|
required this.version,
|
||||||
required this.buildNumber,
|
required this.buildNumber,
|
||||||
this.buildSignature = '',
|
this.buildSignature = '',
|
||||||
List<Object?>? keys,
|
super.keys,
|
||||||
}) : super(keys: keys);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
HookState<PackageInfo, Hook<PackageInfo>> createState() =>
|
HookState<PackageInfo, Hook<PackageInfo>> createState() =>
|
||||||
|
|||||||
@ -24,8 +24,8 @@ class _SidebarXControllerHook extends Hook<SidebarXController> {
|
|||||||
const _SidebarXControllerHook({
|
const _SidebarXControllerHook({
|
||||||
required this.selectedIndex,
|
required this.selectedIndex,
|
||||||
this.extended,
|
this.extended,
|
||||||
List<Object?>? keys,
|
super.keys,
|
||||||
}) : super(keys: keys);
|
});
|
||||||
|
|
||||||
final int selectedIndex;
|
final int selectedIndex;
|
||||||
final bool? extended;
|
final bool? extended;
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
/// Stephan-P@github, SecularSteve@github => Dutch
|
/// Stephan-P@github, SecularSteve@github => Dutch
|
||||||
/// doannc2212@github => Vietnamese
|
/// doannc2212@github => Vietnamese
|
||||||
/// sappho192@github => Korean
|
/// sappho192@github => Korean
|
||||||
|
library;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class L10n {
|
class L10n {
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_desktop_tools/flutter_desktop_tools.dart';
|
import 'package:flutter_desktop_tools/flutter_desktop_tools.dart';
|
||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:media_kit/media_kit.dart';
|
import 'package:media_kit/media_kit.dart';
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import 'package:spotube/services/queries/queries.dart';
|
|||||||
class ArtistPage extends HookConsumerWidget {
|
class ArtistPage extends HookConsumerWidget {
|
||||||
final String artistId;
|
final String artistId;
|
||||||
final logger = getLogger(ArtistPage);
|
final logger = getLogger(ArtistPage);
|
||||||
ArtistPage(this.artistId, {Key? key}) : super(key: key);
|
ArtistPage(this.artistId, {super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import 'package:url_launcher/url_launcher_string.dart';
|
|||||||
|
|
||||||
class ArtistPageFooter extends HookConsumerWidget {
|
class ArtistPageFooter extends HookConsumerWidget {
|
||||||
final Artist artist;
|
final Artist artist;
|
||||||
const ArtistPageFooter({Key? key, required this.artist}) : super(key: key);
|
const ArtistPageFooter({super.key, required this.artist});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import 'package:spotube/utils/type_conversion_utils.dart';
|
|||||||
|
|
||||||
class ArtistPageHeader extends HookConsumerWidget {
|
class ArtistPageHeader extends HookConsumerWidget {
|
||||||
final String artistId;
|
final String artistId;
|
||||||
const ArtistPageHeader({Key? key, required this.artistId}) : super(key: key);
|
const ArtistPageHeader({super.key, required this.artistId});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -6,9 +6,9 @@ import 'package:spotube/services/queries/queries.dart';
|
|||||||
class ArtistPageRelatedArtists extends HookConsumerWidget {
|
class ArtistPageRelatedArtists extends HookConsumerWidget {
|
||||||
final String artistId;
|
final String artistId;
|
||||||
const ArtistPageRelatedArtists({
|
const ArtistPageRelatedArtists({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.artistId,
|
required this.artistId,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -11,8 +11,7 @@ import 'package:spotube/services/queries/queries.dart';
|
|||||||
|
|
||||||
class ArtistPageTopTracks extends HookConsumerWidget {
|
class ArtistPageTopTracks extends HookConsumerWidget {
|
||||||
final String artistId;
|
final String artistId;
|
||||||
const ArtistPageTopTracks({Key? key, required this.artistId})
|
const ArtistPageTopTracks({super.key, required this.artistId});
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import 'package:spotube/extensions/constrains.dart';
|
|||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
|
|
||||||
class DesktopLoginPage extends HookConsumerWidget {
|
class DesktopLoginPage extends HookConsumerWidget {
|
||||||
const DesktopLoginPage({Key? key}) : super(key: key);
|
const DesktopLoginPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
import 'package:spotube/utils/service_utils.dart';
|
import 'package:spotube/utils/service_utils.dart';
|
||||||
|
|
||||||
class LoginTutorial extends ConsumerWidget {
|
class LoginTutorial extends ConsumerWidget {
|
||||||
const LoginTutorial({Key? key}) : super(key: key);
|
const LoginTutorial({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import 'package:spotube/extensions/context.dart';
|
|||||||
import 'package:spotube/provider/scrobbler_provider.dart';
|
import 'package:spotube/provider/scrobbler_provider.dart';
|
||||||
|
|
||||||
class LastFMLoginPage extends HookConsumerWidget {
|
class LastFMLoginPage extends HookConsumerWidget {
|
||||||
const LastFMLoginPage({Key? key}) : super(key: key);
|
const LastFMLoginPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import 'package:spotube/extensions/context.dart';
|
|||||||
import 'package:spotube/provider/download_manager_provider.dart';
|
import 'package:spotube/provider/download_manager_provider.dart';
|
||||||
|
|
||||||
class LibraryPage extends HookConsumerWidget {
|
class LibraryPage extends HookConsumerWidget {
|
||||||
const LibraryPage({Key? key}) : super(key: key);
|
const LibraryPage({super.key});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final downloadingCount = ref.watch(downloadManagerProvider).$downloadCount;
|
final downloadingCount = ref.watch(downloadManagerProvider).$downloadCount;
|
||||||
|
|||||||
@ -18,13 +18,14 @@ import 'package:spotube/extensions/context.dart';
|
|||||||
import 'package:spotube/pages/library/playlist_generate/playlist_generate_result.dart';
|
import 'package:spotube/pages/library/playlist_generate/playlist_generate_result.dart';
|
||||||
import 'package:spotube/provider/spotify_provider.dart';
|
import 'package:spotube/provider/spotify_provider.dart';
|
||||||
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
||||||
|
import 'package:spotube/services/queries/playlist.dart';
|
||||||
import 'package:spotube/services/queries/queries.dart';
|
import 'package:spotube/services/queries/queries.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
||||||
|
|
||||||
const RecommendationAttribute zeroValues = (min: 0, target: 0, max: 0);
|
const RecommendationAttribute zeroValues = (min: 0, target: 0, max: 0);
|
||||||
|
|
||||||
class PlaylistGeneratorPage extends HookConsumerWidget {
|
class PlaylistGeneratorPage extends HookConsumerWidget {
|
||||||
const PlaylistGeneratorPage({Key? key}) : super(key: key);
|
const PlaylistGeneratorPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
@ -507,7 +508,7 @@ class PlaylistGeneratorPage extends HookConsumerWidget {
|
|||||||
tempo: tempo.value,
|
tempo: tempo.value,
|
||||||
mode: mode.value,
|
mode: mode.value,
|
||||||
time_signature: timeSignature.value,
|
time_signature: timeSignature.value,
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
GoRouter.of(context).push(
|
GoRouter.of(context).push(
|
||||||
"/library/generate/result",
|
"/library/generate/result",
|
||||||
|
|||||||
@ -25,9 +25,9 @@ class PlaylistGenerateResultPage extends HookConsumerWidget {
|
|||||||
final PlaylistGenerateResultRouteState state;
|
final PlaylistGenerateResultRouteState state;
|
||||||
|
|
||||||
const PlaylistGenerateResultPage({
|
const PlaylistGenerateResultPage({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.state,
|
required this.state,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -22,7 +22,7 @@ import 'package:spotube/utils/type_conversion_utils.dart';
|
|||||||
|
|
||||||
class LyricsPage extends HookConsumerWidget {
|
class LyricsPage extends HookConsumerWidget {
|
||||||
final bool isModal;
|
final bool isModal;
|
||||||
const LyricsPage({Key? key, this.isModal = false}) : super(key: key);
|
const LyricsPage({super.key, this.isModal = false});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import 'package:spotube/utils/platform.dart';
|
|||||||
|
|
||||||
class MiniLyricsPage extends HookConsumerWidget {
|
class MiniLyricsPage extends HookConsumerWidget {
|
||||||
final Size prevSize;
|
final Size prevSize;
|
||||||
const MiniLyricsPage({Key? key, required this.prevSize}) : super(key: key);
|
const MiniLyricsPage({super.key, required this.prevSize});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -24,8 +24,8 @@ class PlainLyrics extends HookConsumerWidget {
|
|||||||
required this.palette,
|
required this.palette,
|
||||||
this.isModal,
|
this.isModal,
|
||||||
this.defaultTextZoom = 100,
|
this.defaultTextZoom = 100,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -30,8 +30,8 @@ class SyncedLyrics extends HookConsumerWidget {
|
|||||||
required this.palette,
|
required this.palette,
|
||||||
this.isModal,
|
this.isModal,
|
||||||
this.defaultTextZoom = 100,
|
this.defaultTextZoom = 100,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
import 'package:spotube/utils/platform.dart';
|
import 'package:spotube/utils/platform.dart';
|
||||||
|
|
||||||
class WebViewLogin extends HookConsumerWidget {
|
class WebViewLogin extends HookConsumerWidget {
|
||||||
const WebViewLogin({Key? key}) : super(key: key);
|
const WebViewLogin({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import 'package:spotube/services/queries/queries.dart';
|
|||||||
class LikedPlaylistPage extends HookConsumerWidget {
|
class LikedPlaylistPage extends HookConsumerWidget {
|
||||||
final PlaylistSimple playlist;
|
final PlaylistSimple playlist;
|
||||||
const LikedPlaylistPage({
|
const LikedPlaylistPage({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.playlist,
|
required this.playlist,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -16,9 +16,9 @@ import 'package:spotube/utils/type_conversion_utils.dart';
|
|||||||
class PlaylistPage extends HookConsumerWidget {
|
class PlaylistPage extends HookConsumerWidget {
|
||||||
final PlaylistSimple playlist;
|
final PlaylistSimple playlist;
|
||||||
const PlaylistPage({
|
const PlaylistPage({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.playlist,
|
required this.playlist,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -31,8 +31,8 @@ class RootApp extends HookConsumerWidget {
|
|||||||
final Widget child;
|
final Widget child;
|
||||||
const RootApp({
|
const RootApp({
|
||||||
required this.child,
|
required this.child,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import 'package:collection/collection.dart';
|
|||||||
final searchTermStateProvider = StateProvider<String>((ref) => "");
|
final searchTermStateProvider = StateProvider<String>((ref) => "");
|
||||||
|
|
||||||
class SearchPage extends HookConsumerWidget {
|
class SearchPage extends HookConsumerWidget {
|
||||||
const SearchPage({Key? key}) : super(key: key);
|
const SearchPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -13,8 +13,8 @@ class SearchAlbumsSection extends HookConsumerWidget {
|
|||||||
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
||||||
const SearchAlbumsSection({
|
const SearchAlbumsSection({
|
||||||
required this.query,
|
required this.query,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -11,9 +11,9 @@ class SearchArtistsSection extends HookConsumerWidget {
|
|||||||
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
||||||
|
|
||||||
const SearchArtistsSection({
|
const SearchArtistsSection({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.query,
|
required this.query,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -10,8 +10,8 @@ class SearchPlaylistsSection extends HookConsumerWidget {
|
|||||||
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
||||||
const SearchPlaylistsSection({
|
const SearchPlaylistsSection({
|
||||||
required this.query,
|
required this.query,
|
||||||
Key? key,
|
super.key,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -12,9 +12,9 @@ import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
|||||||
class SearchTracksSection extends HookConsumerWidget {
|
class SearchTracksSection extends HookConsumerWidget {
|
||||||
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
final InfiniteQuery<List<Page<dynamic>>, dynamic, int> query;
|
||||||
const SearchTracksSection({
|
const SearchTracksSection({
|
||||||
Key? key,
|
super.key,
|
||||||
required this.query,
|
required this.query,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -16,7 +16,7 @@ final _licenseProvider = FutureProvider<String>((ref) async {
|
|||||||
});
|
});
|
||||||
|
|
||||||
class AboutSpotube extends HookConsumerWidget {
|
class AboutSpotube extends HookConsumerWidget {
|
||||||
const AboutSpotube({Key? key}) : super(key: key);
|
const AboutSpotube({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import 'package:spotube/extensions/context.dart';
|
|||||||
import 'package:spotube/provider/blacklist_provider.dart';
|
import 'package:spotube/provider/blacklist_provider.dart';
|
||||||
|
|
||||||
class BlackListPage extends HookConsumerWidget {
|
class BlackListPage extends HookConsumerWidget {
|
||||||
const BlackListPage({Key? key}) : super(key: key);
|
const BlackListPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import 'package:spotube/extensions/context.dart';
|
|||||||
import 'package:spotube/models/logger.dart';
|
import 'package:spotube/models/logger.dart';
|
||||||
|
|
||||||
class LogsPage extends HookWidget {
|
class LogsPage extends HookWidget {
|
||||||
const LogsPage({Key? key}) : super(key: key);
|
const LogsPage({super.key});
|
||||||
|
|
||||||
List<({DateTime? date, String body})> parseLogs(String raw) {
|
List<({DateTime? date, String body})> parseLogs(String raw) {
|
||||||
return raw
|
return raw
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import 'package:spotube/provider/user_preferences/user_preferences_provider.dart
|
|||||||
import 'package:url_launcher/url_launcher_string.dart';
|
import 'package:url_launcher/url_launcher_string.dart';
|
||||||
|
|
||||||
class SettingsAboutSection extends HookConsumerWidget {
|
class SettingsAboutSection extends HookConsumerWidget {
|
||||||
const SettingsAboutSection({Key? key}) : super(key: key);
|
const SettingsAboutSection({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
import 'package:spotube/provider/scrobbler_provider.dart';
|
import 'package:spotube/provider/scrobbler_provider.dart';
|
||||||
|
|
||||||
class SettingsAccountSection extends HookConsumerWidget {
|
class SettingsAccountSection extends HookConsumerWidget {
|
||||||
const SettingsAccountSection({Key? key}) : super(key: key);
|
const SettingsAccountSection({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(context, ref) {
|
Widget build(context, ref) {
|
||||||
|
|||||||
@ -13,9 +13,9 @@ import 'package:spotube/provider/user_preferences/user_preferences_state.dart';
|
|||||||
class SettingsAppearanceSection extends HookConsumerWidget {
|
class SettingsAppearanceSection extends HookConsumerWidget {
|
||||||
final bool isGettingStarted;
|
final bool isGettingStarted;
|
||||||
const SettingsAppearanceSection({
|
const SettingsAppearanceSection({
|
||||||
Key? key,
|
super.key,
|
||||||
this.isGettingStarted = false,
|
this.isGettingStarted = false,
|
||||||
}) : super(key: key);
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import 'package:spotube/provider/user_preferences/user_preferences_provider.dart
|
|||||||
import 'package:spotube/provider/user_preferences/user_preferences_state.dart';
|
import 'package:spotube/provider/user_preferences/user_preferences_state.dart';
|
||||||
|
|
||||||
class SettingsDesktopSection extends HookConsumerWidget {
|
class SettingsDesktopSection extends HookConsumerWidget {
|
||||||
const SettingsDesktopSection({Key? key}) : super(key: key);
|
const SettingsDesktopSection({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user