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