mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
feat: dialog logo for macos, settings more width for country picker
This commit is contained in:
parent
2211505d71
commit
5e96913ba3
@ -32,7 +32,7 @@ class Sidebar extends HookConsumerWidget {
|
|||||||
Key? key,
|
Key? key,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
Widget _buildSmallLogo() {
|
static Widget brandLogo() {
|
||||||
return Image.asset(
|
return Image.asset(
|
||||||
"assets/spotube-logo.png",
|
"assets/spotube-logo.png",
|
||||||
height: 50,
|
height: 50,
|
||||||
@ -135,7 +135,7 @@ class Sidebar extends HookConsumerWidget {
|
|||||||
(extended.value)
|
(extended.value)
|
||||||
? Row(
|
? Row(
|
||||||
children: [
|
children: [
|
||||||
_buildSmallLogo(),
|
brandLogo(),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
width: 10,
|
width: 10,
|
||||||
),
|
),
|
||||||
@ -149,7 +149,7 @@ class Sidebar extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
: _buildSmallLogo(),
|
: brandLogo(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
windowsFooterItems: [
|
windowsFooterItems: [
|
||||||
|
@ -16,6 +16,7 @@ class UserLibrary extends ConsumerWidget {
|
|||||||
length: 5,
|
length: 5,
|
||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
child: PlatformTabView(
|
child: PlatformTabView(
|
||||||
|
androidIsScrollable: true,
|
||||||
placement: PlatformProperty.all(PlatformTabbarPlacement.top),
|
placement: PlatformProperty.all(PlatformTabbarPlacement.top),
|
||||||
body: {
|
body: {
|
||||||
PlatformTab(
|
PlatformTab(
|
||||||
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
import 'package:spotube/components/Lyrics/SyncedLyrics.dart';
|
import 'package:spotube/components/Lyrics/SyncedLyrics.dart';
|
||||||
|
|
||||||
class LyricDelayAdjustDialog extends HookConsumerWidget {
|
class LyricDelayAdjustDialog extends HookConsumerWidget {
|
||||||
@ -17,6 +18,7 @@ class LyricDelayAdjustDialog extends HookConsumerWidget {
|
|||||||
double.tryParse(controller.text.replaceAll("ms", "")) ?? 0;
|
double.tryParse(controller.text.replaceAll("ms", "")) ?? 0;
|
||||||
|
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: const Center(child: Text("Adjust Lyrics Delay")),
|
title: const Center(child: Text("Adjust Lyrics Delay")),
|
||||||
secondaryActions: [
|
secondaryActions: [
|
||||||
PlatformFilledButton(
|
PlatformFilledButton(
|
||||||
|
@ -98,7 +98,6 @@ class PlayerControls extends HookConsumerWidget {
|
|||||||
PlatformTooltip(
|
PlatformTooltip(
|
||||||
message: "Slide to seek forward or backward",
|
message: "Slide to seek forward or backward",
|
||||||
child: PlatformSlider(
|
child: PlatformSlider(
|
||||||
focusNode: FocusNode(),
|
|
||||||
// cannot divide by zero
|
// cannot divide by zero
|
||||||
// there's an edge case for value being bigger
|
// there's an edge case for value being bigger
|
||||||
// than total duration. Keeping it resolved
|
// than total duration. Keeping it resolved
|
||||||
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
import 'package:spotube/provider/SpotifyDI.dart';
|
import 'package:spotube/provider/SpotifyDI.dart';
|
||||||
import 'package:spotube/provider/SpotifyRequests.dart';
|
import 'package:spotube/provider/SpotifyRequests.dart';
|
||||||
|
|
||||||
@ -25,6 +26,7 @@ class PlaylistCreateDialog extends HookConsumerWidget {
|
|||||||
final collaborative = useState(false);
|
final collaborative = useState(false);
|
||||||
|
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: const Text("Create a Playlist"),
|
title: const Text("Create a Playlist"),
|
||||||
primaryActions: [
|
primaryActions: [
|
||||||
PlatformFilledButton(
|
PlatformFilledButton(
|
||||||
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
import 'package:spotube/provider/UserPreferences.dart';
|
import 'package:spotube/provider/UserPreferences.dart';
|
||||||
|
|
||||||
final highContrast = MaterialColor(
|
final highContrast = MaterialColor(
|
||||||
@ -67,6 +68,7 @@ class ColorSchemePickerDialog extends HookConsumerWidget {
|
|||||||
).key);
|
).key);
|
||||||
|
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: Text("Pick ${schemeType.name} color scheme"),
|
title: Text("Pick ${schemeType.name} color scheme"),
|
||||||
primaryActions: [
|
primaryActions: [
|
||||||
PlatformFilledButton(
|
PlatformFilledButton(
|
||||||
|
@ -315,7 +315,7 @@ class Settings extends HookConsumerWidget {
|
|||||||
"Recommendation Country",
|
"Recommendation Country",
|
||||||
),
|
),
|
||||||
trailing: (context, update) => ConstrainedBox(
|
trailing: (context, update) => ConstrainedBox(
|
||||||
constraints: const BoxConstraints(maxWidth: 250),
|
constraints: const BoxConstraints(maxWidth: 350),
|
||||||
child: PlatformDropDownMenu(
|
child: PlatformDropDownMenu(
|
||||||
value: preferences.recommendationMarket,
|
value: preferences.recommendationMarket,
|
||||||
items: spotifyMarkets
|
items: spotifyMarkets
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
import 'package:spotube/hooks/useBreakpoints.dart';
|
import 'package:spotube/hooks/useBreakpoints.dart';
|
||||||
|
|
||||||
class AdaptiveListTile extends HookWidget {
|
class AdaptiveListTile extends HookWidget {
|
||||||
@ -39,6 +40,7 @@ class AdaptiveListTile extends HookWidget {
|
|||||||
builder: (context) {
|
builder: (context) {
|
||||||
return StatefulBuilder(builder: (context, update) {
|
return StatefulBuilder(builder: (context, update) {
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: title != null
|
title: title != null
|
||||||
? Row(
|
? Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
import 'package:spotube/components/Shared/UniversalImage.dart';
|
import 'package:spotube/components/Shared/UniversalImage.dart';
|
||||||
|
|
||||||
class DownloadConfirmationDialog extends StatelessWidget {
|
class DownloadConfirmationDialog extends StatelessWidget {
|
||||||
@ -8,6 +9,7 @@ class DownloadConfirmationDialog extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: Padding(
|
title: Padding(
|
||||||
padding: const EdgeInsets.all(15),
|
padding: const EdgeInsets.all(15),
|
||||||
child: Row(
|
child: Row(
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
||||||
|
import 'package:fluent_ui/fluent_ui.dart' show FluentTheme;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
import 'package:spotube/utils/platform.dart';
|
import 'package:spotube/utils/platform.dart';
|
||||||
@ -112,7 +113,8 @@ class PageWindowTitleBar extends StatelessWidget
|
|||||||
}
|
}
|
||||||
return WindowTitleBarBox(
|
return WindowTitleBarBox(
|
||||||
child: Container(
|
child: Container(
|
||||||
color: backgroundColor,
|
color: backgroundColor ??
|
||||||
|
FluentTheme.maybeOf(context)?.micaBackgroundColor,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
if (kIsMacOS)
|
if (kIsMacOS)
|
||||||
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
|
|
||||||
final replaceDownloadedFileState = StateProvider<bool?>((ref) => null);
|
final replaceDownloadedFileState = StateProvider<bool?>((ref) => null);
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ class ReplaceDownloadedFileDialog extends ConsumerWidget {
|
|||||||
final groupValue = ref.watch(replaceDownloadedFileState);
|
final groupValue = ref.watch(replaceDownloadedFileState);
|
||||||
|
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: Text("Track ${track.name} Already Exists"),
|
title: Text("Track ${track.name} Already Exists"),
|
||||||
content: Column(
|
content: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
@ -4,6 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
import 'package:spotify/spotify.dart' hide Image;
|
import 'package:spotify/spotify.dart' hide Image;
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
import 'package:spotube/components/Shared/AdaptivePopupMenuButton.dart';
|
import 'package:spotube/components/Shared/AdaptivePopupMenuButton.dart';
|
||||||
import 'package:spotube/components/Shared/HeartButton.dart';
|
import 'package:spotube/components/Shared/HeartButton.dart';
|
||||||
import 'package:spotube/components/Shared/LinkText.dart';
|
import 'package:spotube/components/Shared/LinkText.dart';
|
||||||
@ -95,6 +96,7 @@ class TrackTile extends HookConsumerWidget {
|
|||||||
return HookBuilder(builder: (context) {
|
return HookBuilder(builder: (context) {
|
||||||
final playlistsCheck = useState(<String, bool>{});
|
final playlistsCheck = useState(<String, bool>{});
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: PlatformText(
|
title: PlatformText(
|
||||||
"Add `${track.value.name}` to following Playlists",
|
"Add `${track.value.name}` to following Playlists",
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
|
@ -6,6 +6,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:platform_ui/platform_ui.dart';
|
import 'package:platform_ui/platform_ui.dart';
|
||||||
|
import 'package:spotube/components/Home/Sidebar.dart';
|
||||||
import 'package:spotube/components/Shared/AnchorButton.dart';
|
import 'package:spotube/components/Shared/AnchorButton.dart';
|
||||||
import 'package:spotube/hooks/usePackageInfo.dart';
|
import 'package:spotube/hooks/usePackageInfo.dart';
|
||||||
import 'package:spotube/provider/UserPreferences.dart';
|
import 'package:spotube/provider/UserPreferences.dart';
|
||||||
@ -56,6 +57,7 @@ void useUpdateChecker(WidgetRef ref) {
|
|||||||
const url =
|
const url =
|
||||||
"https://spotube.netlify.app/other-downloads/stable-downloads";
|
"https://spotube.netlify.app/other-downloads/stable-downloads";
|
||||||
return PlatformAlertDialog(
|
return PlatformAlertDialog(
|
||||||
|
icon: Sidebar.brandLogo(),
|
||||||
title: const PlatformText("Spotube has an update"),
|
title: const PlatformText("Spotube has an update"),
|
||||||
primaryActions: [
|
primaryActions: [
|
||||||
PlatformFilledButton(
|
PlatformFilledButton(
|
||||||
|
@ -199,7 +199,7 @@ class SpotubeState extends ConsumerState<Spotube> with WidgetsBindingObserver {
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
platform = TargetPlatform.android;
|
platform = TargetPlatform.macOS;
|
||||||
|
|
||||||
return PlatformApp.router(
|
return PlatformApp.router(
|
||||||
routeInformationParser: router.routeInformationParser,
|
routeInformationParser: router.routeInformationParser,
|
||||||
|
@ -72,7 +72,7 @@ ThemeData darkTheme({
|
|||||||
),
|
),
|
||||||
dialogTheme: DialogTheme(backgroundColor: backgroundMaterialColor[900]),
|
dialogTheme: DialogTheme(backgroundColor: backgroundMaterialColor[900]),
|
||||||
cardColor: backgroundMaterialColor[800],
|
cardColor: backgroundMaterialColor[800],
|
||||||
canvasColor: backgroundMaterialColor[900],
|
canvasColor: backgroundMaterialColor[800],
|
||||||
listTileTheme: const ListTileThemeData(horizontalTitleGap: 0),
|
listTileTheme: const ListTileThemeData(horizontalTitleGap: 0),
|
||||||
checkboxTheme: CheckboxThemeData(
|
checkboxTheme: CheckboxThemeData(
|
||||||
fillColor: MaterialStateProperty.resolveWith((states) {
|
fillColor: MaterialStateProperty.resolveWith((states) {
|
||||||
|
Loading…
Reference in New Issue
Block a user