feat: dialog logo for macos, settings more width for country picker

This commit is contained in:
Kingkor Roy Tirtho 2022-11-04 11:36:33 +06:00
parent 2211505d71
commit 5e96913ba3
15 changed files with 26 additions and 8 deletions

View File

@ -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: [

View File

@ -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(

View File

@ -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(

View File

@ -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

View File

@ -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(

View File

@ -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(

View File

@ -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

View File

@ -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,

View File

@ -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(

View File

@ -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)

View File

@ -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,

View File

@ -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(

View File

@ -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(

View File

@ -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,

View File

@ -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) {