feat: replace all types of buttons with platform buttons

This commit is contained in:
Kingkor Roy Tirtho 2022-10-29 15:26:55 +06:00
parent 9eee573ce9
commit 69739b4572
26 changed files with 131 additions and 97 deletions

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/components/Artist/ArtistAlbumList.dart';
import 'package:spotube/components/Artist/ArtistCard.dart';
@ -176,7 +177,7 @@ class ArtistProfile extends HookConsumerWidget {
);
},
),
IconButton(
PlatformIconButton(
icon: const Icon(Icons.share_rounded),
onPressed: () {
Clipboard.setData(
@ -260,11 +261,13 @@ class ArtistProfile extends HookConsumerWidget {
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.circular(50),
),
child: IconButton(
icon: Icon(isPlaylistPlaying
child: PlatformIconButton(
icon: Icon(
isPlaylistPlaying
? Icons.stop_rounded
: Icons.play_arrow_rounded),
: Icons.play_arrow_rounded,
color: Colors.white,
),
onPressed: () =>
playPlaylist(topTracks.toList()),
),

View File

@ -75,7 +75,7 @@ class Sidebar extends HookConsumerWidget {
if (layoutMode == LayoutMode.compact ||
(breakpoints.isSm && layoutMode == LayoutMode.adaptive)) {
return Container();
return child;
}
void toggleExtended() =>
@ -117,7 +117,7 @@ class Sidebar extends HookConsumerWidget {
child: MoveWindow(
child: !extended.value
? Center(
child: IconButton(
child: PlatformIconButton(
icon: const Icon(Icons.menu_rounded),
onPressed: toggleExtended,
),
@ -127,7 +127,7 @@ class Sidebar extends HookConsumerWidget {
),
if (!kIsDesktop && !extended.value)
Center(
child: IconButton(
child: PlatformIconButton(
icon: const Icon(Icons.menu_rounded),
onPressed: toggleExtended,
),
@ -143,7 +143,7 @@ class Sidebar extends HookConsumerWidget {
"Spotube",
style: Theme.of(context).textTheme.headline4,
),
IconButton(
PlatformIconButton(
icon: const Icon(Icons.menu_rounded),
onPressed: toggleExtended,
),
@ -241,7 +241,7 @@ class SidebarFooter extends HookConsumerWidget {
],
),
),
IconButton(
PlatformIconButton(
icon: const Icon(Icons.settings_outlined),
onPressed: () => Sidebar.goToSettings(context)),
],

View File

@ -30,7 +30,7 @@ class UserDownloads extends HookConsumerWidget {
),
),
const SizedBox(width: 10),
ElevatedButton(
PlatformFilledButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red[50],
foregroundColor: Colors.red[400],

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:introduction_screen/introduction_screen.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Login/TokenLoginForms.dart';
import 'package:spotube/components/Shared/Hyperlink.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart';
@ -16,7 +17,7 @@ class LoginTutorial extends ConsumerWidget {
return Scaffold(
appBar: PageWindowTitleBar(
leading: TextButton(
leading: PlatformTextButton(
child: const Text("Exit"),
onPressed: () {
Navigator.of(context).pop();
@ -27,7 +28,7 @@ class LoginTutorial extends ConsumerWidget {
next: const Text("Next"),
back: const Text("Previous"),
showBackButton: true,
overrideDone: TextButton(
overrideDone: PlatformTextButton(
onPressed: auth.isLoggedIn
? () {
ServiceUtils.navigate(context, "/");

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Login/TokenLoginForms.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart';
import 'package:spotube/hooks/useBreakpoints.dart';
@ -45,7 +46,7 @@ class TokenLogin extends HookConsumerWidget {
crossAxisAlignment: WrapCrossAlignment.center,
children: [
const Text("Don't know how to do this?"),
TextButton(
PlatformTextButton(
child: const Text(
"Follow along the Step by Step guide",
),

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/provider/Auth.dart';
import 'package:spotube/utils/service_utils.dart';
@ -42,7 +43,7 @@ class TokenLoginForm extends HookConsumerWidget {
keyboardType: TextInputType.visiblePassword,
),
const SizedBox(height: 20),
ElevatedButton(
PlatformFilledButton(
onPressed: () async {
if (keyCodeController.text.isEmpty ||
directCodeController.text.isEmpty) {

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Lyrics/SyncedLyrics.dart';
class LyricDelayAdjustDialog extends HookConsumerWidget {
@ -18,13 +19,13 @@ class LyricDelayAdjustDialog extends HookConsumerWidget {
return AlertDialog(
title: const Center(child: Text("Adjust Lyrics Delay")),
actions: [
ElevatedButton(
PlatformFilledButton(
child: const Text("Cancel"),
onPressed: () {
Navigator.of(context).pop();
},
),
ElevatedButton(
PlatformFilledButton(
child: const Text("Done"),
onPressed: () {
Navigator.of(context).pop(
@ -38,7 +39,7 @@ class LyricDelayAdjustDialog extends HookConsumerWidget {
content: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
PlatformIconButton(
icon: const Icon(Icons.remove_rounded),
onPressed: () {
controller.text = "${getValue() - 25}ms";
@ -61,7 +62,7 @@ class LyricDelayAdjustDialog extends HookConsumerWidget {
},
),
),
IconButton(
PlatformIconButton(
icon: const Icon(Icons.add_rounded),
onPressed: () {
controller.text = "${getValue() + 25}ms";

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerLyrics.dart';
import 'package:spotube/components/Lyrics/LyricDelayAdjustDialog.dart';
@ -85,7 +86,7 @@ class SyncedLyrics extends HookConsumerWidget {
Positioned.fill(
child: Align(
alignment: Alignment.centerRight,
child: IconButton(
child: PlatformIconButton(
tooltip: "Lyrics Delay",
icon: const Icon(Icons.av_timer_rounded),
onPressed: () async {

View File

@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/components/Library/UserLocalTracks.dart';
import 'package:spotube/components/Player/PlayerQueue.dart';
@ -48,7 +49,7 @@ class PlayerActions extends HookConsumerWidget {
return Row(
mainAxisAlignment: mainAxisAlignment,
children: [
IconButton(
PlatformIconButton(
icon: const Icon(Icons.queue_music_rounded),
tooltip: 'Queue',
onPressed: playback.playlist != null
@ -73,7 +74,7 @@ class PlayerActions extends HookConsumerWidget {
}
: null,
),
IconButton(
PlatformIconButton(
icon: const Icon(Icons.alt_route_rounded),
tooltip: "Alternative Track Sources",
onPressed: playback.track != null
@ -108,7 +109,7 @@ class PlayerActions extends HookConsumerWidget {
),
)
else
IconButton(
PlatformIconButton(
tooltip: 'Download track',
icon: Icon(
isDownloaded

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/hooks/playback.dart';
import 'package:spotube/models/Intents.dart';
import 'package:spotube/models/Logger.dart';
@ -138,7 +139,7 @@ class PlayerControls extends HookConsumerWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
IconButton(
PlatformIconButton(
tooltip: playback.isLoop
? "Repeat playlist"
: playback.isShuffled
@ -156,14 +157,16 @@ class PlayerControls extends HookConsumerWidget {
? null
: playback.cyclePlaybackMode,
),
IconButton(
PlatformIconButton(
tooltip: "Previous track",
icon: const Icon(Icons.skip_previous_rounded),
icon: Icon(
Icons.skip_previous_rounded,
color: iconColor,
),
onPressed: () {
onPrevious();
}),
IconButton(
PlatformIconButton(
tooltip: playback.isPlaying
? "Pause playback"
: "Resume playback",
@ -177,23 +180,27 @@ class PlayerControls extends HookConsumerWidget {
playback.isPlaying
? Icons.pause_rounded
: Icons.play_arrow_rounded,
),
color: iconColor,
),
onPressed: Actions.handler<PlayPauseIntent>(
context,
PlayPauseIntent(ref),
),
),
IconButton(
PlatformIconButton(
tooltip: "Next track",
icon: const Icon(Icons.skip_next_rounded),
onPressed: () => onNext(),
icon: Icon(
Icons.skip_next_rounded,
color: iconColor,
),
IconButton(
onPressed: () => onNext(),
),
PlatformIconButton(
tooltip: "Stop playback",
icon: const Icon(Icons.stop_rounded),
icon: Icon(
Icons.stop_rounded,
color: iconColor,
),
onPressed: playback.track != null
? () async {
try {

View File

@ -3,6 +3,7 @@ import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Player/PlayerTrackDetails.dart';
import 'package:spotube/hooks/playback.dart';
import 'package:spotube/hooks/usePaletteColor.dart';
@ -79,21 +80,23 @@ class PlayerOverlay extends HookConsumerWidget {
),
Row(
children: [
IconButton(
icon: const Icon(Icons.skip_previous_rounded),
PlatformIconButton(
icon: Icon(
Icons.skip_previous_rounded,
color: paletteColor.bodyTextColor,
),
onPressed: () {
onPrevious();
}),
Consumer(
builder: (context, ref, _) {
return IconButton(
return PlatformIconButton(
icon: Icon(
ref.read(playbackProvider).isPlaying
? Icons.pause_rounded
: Icons.play_arrow_rounded,
),
color: paletteColor.bodyTextColor,
),
onPressed: Actions.handler<PlayPauseIntent>(
context,
PlayPauseIntent(ref),
@ -101,11 +104,13 @@ class PlayerOverlay extends HookConsumerWidget {
);
},
),
IconButton(
icon: const Icon(Icons.skip_next_rounded),
onPressed: () => onNext(),
PlatformIconButton(
icon: Icon(
Icons.skip_next_rounded,
color: paletteColor.bodyTextColor,
),
onPressed: () => onNext(),
),
],
),
],

View File

@ -5,6 +5,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Player/PlayerActions.dart';
import 'package:spotube/components/Player/PlayerControls.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart';
@ -162,7 +163,7 @@ class PlayerView extends HookConsumerWidget {
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
floatingQueue: false,
extraActions: [
IconButton(
PlatformIconButton(
tooltip: "Open Lyrics",
icon: const Icon(Icons.lyrics_rounded),
onPressed: () {

View File

@ -185,7 +185,7 @@ class Search extends HookConsumerWidget {
}),
if (searchTrack.hasNextPage && tracks.isNotEmpty)
Center(
child: TextButton(
child: PlatformTextButton(
onPressed: searchTrack.isFetchingNextPage
? null
: () => searchTrack.fetchNextPage(),

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/provider/UserPreferences.dart';
final highContrast = MaterialColor(
@ -68,13 +69,13 @@ class ColorSchemePickerDialog extends HookConsumerWidget {
return AlertDialog(
title: Text("Pick ${schemeType.name} color scheme"),
actions: [
TextButton(
PlatformTextButton(
child: const Text("Cancel"),
onPressed: () {
Navigator.pop(context);
},
),
ElevatedButton(
PlatformFilledButton(
child: const Text("Save"),
onPressed: () {
switch (schemeType) {

View File

@ -466,9 +466,7 @@ class Settings extends HookConsumerWidget {
),
),
),
trailing: (context, update) => ElevatedButton.icon(
icon: const Icon(Icons.favorite_outline_rounded),
label: const Text("Please Sponsor/Donate"),
trailing: (context, update) => PlatformFilledButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red[100],
foregroundColor: Colors.pinkAccent,
@ -480,6 +478,12 @@ class Settings extends HookConsumerWidget {
mode: LaunchMode.externalApplication,
);
},
child: Row(
children: const [
Icon(Icons.favorite_outline_rounded),
Text("Please Sponsor/Donate"),
],
),
),
),
PlatformListTile(

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:popover/popover.dart';
import 'package:spotube/hooks/useBreakpoints.dart';
@ -24,23 +25,25 @@ class Action extends StatelessWidget {
"\"",
"",
),
child: IconButton(
child: PlatformIconButton(
icon: icon,
onPressed: onPressed,
),
);
}
return TextButton.icon(
return PlatformTextButton(
style: TextButton.styleFrom(
foregroundColor: Theme.of(context).textTheme.bodyMedium?.color,
padding: const EdgeInsets.all(20),
),
icon: icon,
label: Align(
alignment: Alignment.centerLeft,
child: text,
),
onPressed: onPressed,
child: Row(
children: [
icon,
const SizedBox(width: 10),
text,
],
),
);
}
}
@ -59,7 +62,7 @@ class AdaptiveActions extends HookWidget {
final breakpoint = useBreakpoints();
if (breakpoint.isLessThan(breakOn)) {
return IconButton(
return PlatformIconButton(
icon: const Icon(Icons.more_horiz),
onPressed: () {
showPopover(

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/provider/Auth.dart';
import 'package:spotube/utils/service_utils.dart';
@ -21,7 +22,7 @@ class AnonymousFallback extends ConsumerWidget {
children: [
const Text("You're not logged in"),
const SizedBox(height: 10),
ElevatedButton(
PlatformFilledButton(
child: const Text("Login with Spotify"),
onPressed: () => ServiceUtils.navigate(context, "/settings"),
)

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Shared/UniversalImage.dart';
class DownloadConfirmationDialog extends StatelessWidget {
@ -57,11 +58,11 @@ class DownloadConfirmationDialog extends StatelessWidget {
),
),
actions: [
ElevatedButton(
PlatformFilledButton(
child: const Text("Decline"),
onPressed: () => Navigator.of(context).pop(false),
),
ElevatedButton(
PlatformFilledButton(
onPressed: () => Navigator.of(context).pop(true),
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white,

View File

@ -3,6 +3,7 @@ import 'package:fl_query_hooks/fl_query_hooks.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/hooks/usePaletteColor.dart';
import 'package:spotube/provider/Auth.dart';
@ -32,7 +33,7 @@ class HeartButton extends ConsumerWidget {
if (!auth.isLoggedIn) return Container();
return IconButton(
return PlatformIconButton(
tooltip: tooltip,
icon: Icon(
icon ??

View File

@ -1,5 +1,6 @@
import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:flutter/material.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/utils/platform.dart';
class TitleBarActionButtons extends StatelessWidget {
@ -26,7 +27,7 @@ class TitleBarActionButtons extends StatelessWidget {
data: const IconThemeData(size: 16),
child: Row(
children: [
TextButton(
PlatformTextButton(
onPressed: () {
appWindow.minimize();
},
@ -38,7 +39,7 @@ class TitleBarActionButtons extends StatelessWidget {
Icons.minimize_rounded,
color: color,
)),
TextButton(
PlatformTextButton(
onPressed: () async {
appWindow.maximizeOrRestore();
},
@ -50,7 +51,7 @@ class TitleBarActionButtons extends StatelessWidget {
Icons.crop_square_rounded,
color: color,
)),
TextButton(
PlatformTextButton(
onPressed: () {
appWindow.close();
},

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart';
final replaceDownloadedFileState = StateProvider<bool?>((ref) => null);
@ -48,13 +49,13 @@ class ReplaceDownloadedFileDialog extends ConsumerWidget {
],
),
actions: [
TextButton(
PlatformTextButton(
child: const Text("No"),
onPressed: () {
Navigator.pop(context, false);
},
),
TextButton(
PlatformTextButton(
child: const Text("Yes"),
onPressed: () {
Navigator.pop(context, true);

View File

@ -2,6 +2,7 @@ import 'package:fl_query/fl_query.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/LoaderShimmers/ShimmerTrackTile.dart';
import 'package:spotube/components/Shared/PageWindowTitleBar.dart';
import 'package:spotube/components/Shared/TracksTableView.dart';
@ -59,7 +60,7 @@ class TrackCollectionView<T> extends HookConsumerWidget {
final List<Widget> buttons = [
if (showShare)
IconButton(
PlatformIconButton(
icon: Icon(
Icons.share_rounded,
color: color?.titleTextColor,
@ -71,13 +72,9 @@ class TrackCollectionView<T> extends HookConsumerWidget {
// play playlist
Container(
margin: const EdgeInsets.symmetric(vertical: 10),
child: ElevatedButton(
child: PlatformFilledButton(
style: ButtonStyle(
backgroundColor:
MaterialStateProperty.all(Theme.of(context).primaryColor),
shape: MaterialStateProperty.all(
const CircleBorder(),
),
shape: MaterialStateProperty.all(const CircleBorder()),
),
onPressed: tracksSnapshot.data != null ? onPlay : null,
child: Icon(
@ -112,7 +109,7 @@ class TrackCollectionView<T> extends HookConsumerWidget {
}, [collapsed.value]);
return SafeArea(
child: Scaffold(
child: PlatformScaffold(
appBar: kIsDesktop
? PageWindowTitleBar(
backgroundColor: color?.color,

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart' hide Action;
import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart' hide Image;
import 'package:spotube/components/Shared/AdaptivePopupMenuButton.dart';
import 'package:spotube/components/Shared/HeartButton.dart';
@ -105,11 +106,11 @@ class TrackTile extends HookConsumerWidget {
fontWeight: FontWeight.bold,
),
actions: [
TextButton(
PlatformTextButton(
child: const Text("Cancel"),
onPressed: () => Navigator.pop(context),
),
ElevatedButton(
PlatformFilledButton(
child: const Text("Add"),
onPressed: () async {
final selectedPlaylists = playlistsCheck
@ -214,7 +215,7 @@ class TrackTile extends HookConsumerWidget {
),
),
),
IconButton(
PlatformIconButton(
icon: Icon(
playback.track?.id != null &&
playback.track?.id == track.value.id

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:spotify/spotify.dart';
import 'package:spotube/components/Library/UserLocalTracks.dart';
import 'package:spotube/components/Shared/DownloadConfirmationDialog.dart';
@ -126,10 +127,9 @@ class TracksTableView extends HookConsumerWidget {
.state = value;
},
),
PopupMenuButton(
itemBuilder: (context) {
return [
PopupMenuItem(
PlatformPopupMenuButton(
items: [
PlatformPopupMenuItem(
enabled: selected.value.isNotEmpty,
value: "download",
child: Row(
@ -141,8 +141,7 @@ class TracksTableView extends HookConsumerWidget {
],
),
),
];
},
],
onSelected: (action) async {
switch (action) {
case "download":
@ -163,6 +162,7 @@ class TracksTableView extends HookConsumerWidget {
default:
}
},
child: const Icon(Icons.more_vert),
),
],
),

View File

@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:http/http.dart' as http;
import 'package:platform_ui/platform_ui.dart';
import 'package:spotube/components/Shared/AnchorButton.dart';
import 'package:spotube/hooks/usePackageInfo.dart';
import 'package:spotube/provider/UserPreferences.dart';
@ -59,7 +60,7 @@ void useUpdateChecker(WidgetRef ref) {
return AlertDialog(
title: const Text("Spotube has an update"),
actions: [
ElevatedButton(
PlatformFilledButton(
child: const Text("Download Now"),
onPressed: () => download(url),
),

View File

@ -199,7 +199,7 @@ class SpotubeState extends ConsumerState<Spotube> with WidgetsBindingObserver {
};
}, []);
platform = TargetPlatform.macOS;
platform = TargetPlatform.windows;
return PlatformApp.router(
routeInformationParser: router.routeInformationParser,