chore: remove obsolete appearance customization

This commit is contained in:
Kingkor Roy Tirtho 2025-01-28 21:42:16 +06:00
parent 42158a99ff
commit ada0ca1472
6 changed files with 21 additions and 158 deletions

View File

@ -133,10 +133,6 @@ class Spotube extends HookConsumerWidget {
final locale = ref.watch(userPreferencesProvider.select((s) => s.locale));
final accentMaterialColor =
ref.watch(userPreferencesProvider.select((s) => s.accentColorScheme));
// final isAmoledTheme =
// ref.watch(userPreferencesProvider.select((s) => s.amoledDarkTheme));
// final paletteColor =
// ref.watch(paletteProvider.select((s) => s?.dominantColor?.color));
final router = ref.watch(routerProvider);
final hasTouchSupport = useHasTouch();
@ -166,19 +162,6 @@ class Spotube extends HookConsumerWidget {
};
}, []);
// final lightTheme = useMemoized(
// () => theme(paletteColor ?? accentMaterialColor, Brightness.light, false),
// [paletteColor, accentMaterialColor],
// );
// final darkTheme = useMemoized(
// () => theme(
// paletteColor ?? accentMaterialColor,
// Brightness.dark,
// isAmoledTheme,
// ),
// [paletteColor, accentMaterialColor, isAmoledTheme],
// );
return ShadcnApp.router(
supportedLocales: L10n.all,
locale: locale.languageCode == "system" ? null : locale,

View File

@ -79,14 +79,14 @@ class SettingsAppearanceSection extends HookConsumerWidget {
}
},
),
ListTile(
leading: const Icon(SpotubeIcons.amoled),
title: Text(context.l10n.use_amoled_mode),
subtitle: Text(context.l10n.pitch_dark_theme),
trailing: Switch(
value: preferences.amoledDarkTheme,
onChanged: preferencesNotifier.setAmoledDarkTheme,
)),
// ListTile(
// leading: const Icon(SpotubeIcons.amoled),
// title: Text(context.l10n.use_amoled_mode),
// subtitle: Text(context.l10n.pitch_dark_theme),
// trailing: Switch(
// value: preferences.amoledDarkTheme,
// onChanged: preferencesNotifier.setAmoledDarkTheme,
// )),
ListTile(
leading: const Icon(SpotubeIcons.palette),
title: Text(context.l10n.accent_color),
@ -102,14 +102,14 @@ class SettingsAppearanceSection extends HookConsumerWidget {
),
onTap: pickColorScheme(),
),
ListTile(
leading: const Icon(SpotubeIcons.colorSync),
title: Text(context.l10n.sync_album_color),
subtitle: Text(context.l10n.sync_album_color_description),
trailing: Switch(
value: preferences.albumColorSync,
onChanged: preferencesNotifier.setAlbumColorSync,
)),
// ListTile(
// leading: const Icon(SpotubeIcons.colorSync),
// title: Text(context.l10n.sync_album_color),
// subtitle: Text(context.l10n.sync_album_color_description),
// trailing: Switch(
// value: preferences.albumColorSync,
// onChanged: preferencesNotifier.setAlbumColorSync,
// )),
];
if (isGettingStarted) {

View File

@ -1,15 +1,11 @@
import 'dart:async';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart';
import 'package:spotube/components/image/universal_image.dart';
import 'package:spotube/extensions/image.dart';
import 'package:spotube/models/local_track.dart';
import 'package:spotube/provider/audio_player/audio_player.dart';
import 'package:spotube/provider/audio_player/state.dart';
import 'package:spotube/provider/discord_provider.dart';
import 'package:spotube/provider/history/history.dart';
import 'package:spotube/provider/palette_provider.dart';
import 'package:spotube/provider/skip_segments/skip_segments.dart';
import 'package:spotube/provider/scrobbler/scrobbler.dart';
import 'package:spotube/provider/server/sourced_track.dart';
@ -48,36 +44,12 @@ class AudioPlayerStreamListeners {
PlaybackHistoryActions get history =>
ref.read(playbackHistoryActionsProvider);
Future<void> updatePalette() async {
final palette = ref.read(paletteProvider);
if (!preferences.albumColorSync) {
if (palette != null) ref.read(paletteProvider.notifier).state = null;
return;
}
return Future.microtask(() async {
final activeTrack = ref.read(audioPlayerProvider).activeTrack;
if (activeTrack == null) return;
final palette = await PaletteGenerator.fromImageProvider(
UniversalImage.imageProvider(
(activeTrack.album?.images).asUrlString(
placeholder: ImagePlaceholder.albumArt,
),
height: 50,
width: 50,
),
);
ref.read(paletteProvider.notifier).state = palette;
});
}
StreamSubscription subscribeToPlaylist() {
return audioPlayer.playlistStream.listen((mpvPlaylist) {
try {
if (audioPlayerState.activeTrack == null) return;
notificationService.addTrack(audioPlayerState.activeTrack!);
discord.updatePresence(audioPlayerState.activeTrack!);
updatePalette();
} catch (e, stack) {
AppLogger.reportError(e, stack);
}

View File

@ -1,4 +0,0 @@
import 'package:palette_generator/palette_generator.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final paletteProvider = StateProvider<PaletteGenerator?>((ref) => null);

View File

@ -7,9 +7,7 @@ import 'package:shadcn_flutter/shadcn_flutter.dart' hide join;
import 'package:spotify/spotify.dart';
import 'package:spotube/models/database/database.dart';
import 'package:spotube/modules/settings/color_scheme_picker_dialog.dart';
import 'package:spotube/provider/audio_player/audio_player_streams.dart';
import 'package:spotube/provider/database/database.dart';
import 'package:spotube/provider/palette_provider.dart';
import 'package:spotube/services/audio_player/audio_player.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/services/sourced_track/enums.dart';
@ -144,11 +142,11 @@ class UserPreferencesNotifier extends Notifier<PreferencesTableData> {
void setAlbumColorSync(bool sync) {
setData(PreferencesTableCompanion(albumColorSync: Value(sync)));
if (!sync) {
ref.read(paletteProvider.notifier).state = null;
} else {
ref.read(audioPlayerStreamListenersProvider).updatePalette();
}
// if (!sync) {
// ref.read(paletteProvider.notifier).state = null;
// } else {
// ref.read(audioPlayerStreamListenersProvider).updatePalette();
// }
}
void setCheckUpdate(bool check) {

View File

@ -1,86 +0,0 @@
import 'package:flutter/material.dart';
ThemeData theme(Color seed, Brightness brightness, bool isAmoled) {
final scheme = ColorScheme.fromSeed(
seedColor: seed,
shadow: Colors.black12,
surface: isAmoled ? Colors.black : null,
brightness: brightness,
);
return ThemeData(
useMaterial3: true,
colorScheme: scheme,
listTileTheme: ListTileThemeData(
horizontalTitleGap: 5,
iconColor: scheme.onSurface,
),
appBarTheme: const AppBarTheme(
surfaceTintColor: Colors.transparent,
scrolledUnderElevation: 0,
shadowColor: Colors.transparent,
elevation: 0,
),
inputDecorationTheme: InputDecorationTheme(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(15),
),
),
iconTheme: IconThemeData(size: 16, color: scheme.onSurface),
navigationBarTheme: const NavigationBarThemeData(
labelBehavior: NavigationDestinationLabelBehavior.alwaysHide,
height: 50,
iconTheme: WidgetStatePropertyAll(
IconThemeData(size: 18),
),
),
tabBarTheme: TabBarTheme(
indicatorSize: TabBarIndicatorSize.tab,
labelStyle: const TextStyle(fontWeight: FontWeight.w600),
labelColor: scheme.primary,
dividerColor: Colors.transparent,
indicator: BoxDecoration(
color: scheme.secondaryContainer,
borderRadius: BorderRadius.circular(15),
),
),
popupMenuTheme: PopupMenuThemeData(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
color: scheme.surface,
elevation: 4,
labelTextStyle: WidgetStatePropertyAll(
TextStyle(color: scheme.onSurface),
),
),
snackBarTheme: SnackBarThemeData(
behavior: SnackBarBehavior.floating,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
backgroundColor: scheme.onSurface,
contentTextStyle: TextStyle(color: scheme.surface),
),
sliderTheme: SliderThemeData(overlayShape: SliderComponentShape.noOverlay),
searchBarTheme: SearchBarThemeData(
textStyle: const WidgetStatePropertyAll(TextStyle(fontSize: 15)),
constraints: const BoxConstraints(maxWidth: double.infinity),
padding: const WidgetStatePropertyAll(EdgeInsets.all(8)),
backgroundColor: WidgetStatePropertyAll(
Color.lerp(
scheme.surfaceContainerHighest,
scheme.surface,
brightness == Brightness.light ? .9 : .7,
),
),
elevation: const WidgetStatePropertyAll(0),
shape: WidgetStatePropertyAll(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
),
),
scrollbarTheme: const ScrollbarThemeData(
thickness: WidgetStatePropertyAll(14),
),
checkboxTheme: CheckboxThemeData(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
),
);
}