all images round +

fix ios status bar
clean up some code
fix lyrics button size
This commit is contained in:
Pato05 2024-04-27 01:12:41 +02:00
parent f2f862a406
commit 36f8666906
No known key found for this signature in database
GPG Key ID: ED4C6F9C3D574FB6
10 changed files with 325 additions and 308 deletions

View File

@ -40,7 +40,8 @@
android:label="Freezer"
android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true"
android:targetSandboxVersion="2">
android:targetSandboxVersion="2"
android:enableOnBackInvokedCallback="true">
<service
android:name=".DownloadService"

View File

@ -47,7 +47,8 @@
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<!-- For HTTP local server -->
<!-- For HTTP local server (audio playback) -->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>

View File

@ -140,7 +140,7 @@ class AudioPlayerTask extends BaseAudioHandler {
Future<void> _start(AudioPlayerTaskInitArguments initArgs) async {
// Linux and Windows support
JustAudioMediaKit.ensureInitialized(iOS: true);
JustAudioMediaKit.ensureInitialized();
JustAudioMediaKit.title = 'Freezer';
JustAudioMediaKit.protocolWhitelist = const ['http'];
//JustAudioMediaKit.bufferSize = 128;
@ -666,6 +666,7 @@ class AudioPlayerTask extends BaseAudioHandler {
Future customAction(String name, [Map<String, dynamic>? extras]) async {
switch (name) {
case 'updateQuality':
print('updateQuality($extras)');
//Pass wifi & mobile quality by custom action
//Isolate can't access globals
wifiQuality = extras!['wifiQuality'] as AudioQuality;

View File

@ -215,15 +215,7 @@ class _FreezerAppState extends State<FreezerApp> with WidgetsBindingObserver {
fontFamily: settings.fontFamily,
colorScheme: lightScheme,
useMaterial3: true,
appBarTheme: const AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.dark,
statusBarIconBrightness: Brightness.dark,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
appBarTheme: Settings.appBarThemeLight,
)
: settings.themeData;
final darkTheme = settings.materialYouAccent
@ -233,15 +225,7 @@ class _FreezerAppState extends State<FreezerApp> with WidgetsBindingObserver {
colorScheme: darkScheme,
useMaterial3: true,
brightness: Brightness.dark,
appBarTheme: const AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
appBarTheme: Settings.appBarThemeDark,
)
: null;
return MaterialApp(
@ -259,19 +243,9 @@ class _FreezerAppState extends State<FreezerApp> with WidgetsBindingObserver {
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: supportedLocales,
home: WillPopScope(
onWillPop: () async {
if (navigatorKey.currentState!.canPop()) {
await navigatorKey.currentState!.maybePop();
return false;
}
// await MoveToBackground.moveTaskToBack();
return true;
},
child: I18n(
initialLocale: _locale(),
child: const LoginMainWrapper(),
),
home: I18n(
initialLocale: _locale(),
child: const LoginMainWrapper(),
),
navigatorKey: mainNavigatorKey,
);
@ -327,19 +301,8 @@ class _LoginMainWrapperState extends State<LoginMainWrapper> {
@override
Widget build(BuildContext context) {
if (settings.arl == null) {
return AnnotatedRegion<SystemUiOverlayStyle>(
value: (Theme.of(context).brightness == Brightness.dark
? SystemUiOverlayStyle.dark
: SystemUiOverlayStyle.light)
.copyWith(
statusBarColor: Colors.transparent,
systemNavigationBarColor:
Colors.transparent, // Theme.of(context).scaffoldBackgroundColor,
statusBarIconBrightness: Brightness.light,
),
child: LoginWidget(
callback: () => setState(() => {}),
),
return LoginWidget(
callback: () => setState(() => {}),
);
}
return const MainScreen();
@ -436,7 +399,11 @@ class MainScreenState extends State<MainScreen>
type: 'favorites',
localizedTitle: 'Favorites'.i18n,
icon: 'ic_favorites'),
ShortcutItem(type: 'flow', localizedTitle: 'Flow'.i18n, icon: 'ic_flow'),
ShortcutItem(
type: 'flow',
localizedTitle: 'Flow'.i18n,
icon: 'ic_flow',
),
]);
}
@ -755,29 +722,33 @@ class MainScreenState extends State<MainScreen>
focusNode: screenFocusNode,
skipTraversal: true,
canRequestFocus: false,
child: _MainRouteNavigator(
navigatorKey: navigatorKey,
routes: {
Navigator.defaultRouteName: (context) => HomeScreen(),
'/podcasts': (context) => HomePageScreen(
cacheable: true,
channel: const DeezerChannel(
target: 'channels/podcasts'),
title: 'Podcasts'.i18n,
),
'/library': (context) => const LibraryScreen(),
'/library/tracks': (context) => const LibraryTracks(),
'/library/albums': (context) => const LibraryAlbums(),
'/library/artists': (context) => const LibraryArtists(),
'/library/playlists': (context) =>
const LibraryPlaylists(),
'/library/history': (context) => const HistoryScreen(),
'/search': (context) => const SearchScreen(),
'/settings': (context) => const SettingsScreen(),
'/downloads': (context) => const DownloadsScreen(),
'/spotify-importer': (context) =>
const SpotifyImporterV2(),
},
child: NavigatorPopHandler(
onPop: () => navigatorKey.currentState!.maybePop(),
child: _MainRouteNavigator(
navigatorKey: navigatorKey,
routes: {
Navigator.defaultRouteName: (context) =>
const HomeScreen(),
'/podcasts': (context) => HomePageScreen(
cacheable: true,
channel: const DeezerChannel(
target: 'channels/podcasts'),
title: 'Podcasts'.i18n,
),
'/library': (context) => const LibraryScreen(),
'/library/tracks': (context) => const LibraryTracks(),
'/library/albums': (context) => const LibraryAlbums(),
'/library/artists': (context) => const LibraryArtists(),
'/library/playlists': (context) =>
const LibraryPlaylists(),
'/library/history': (context) => const HistoryScreen(),
'/search': (context) => const SearchScreen(),
'/settings': (context) => const SettingsScreen(),
'/downloads': (context) => const DownloadsScreen(),
'/spotify-importer': (context) =>
const SpotifyImporterV2(),
},
),
)));
}));
}

View File

@ -318,6 +318,30 @@ class Settings {
final _elevation1Black = Color.alphaBlend(Colors.white12, Colors.black);
static const systemOverlayStyleDark = SystemUiOverlayStyle(
statusBarBrightness: Brightness.dark,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
);
static const systemOverlayStyleLight = SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.dark,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
);
static const appBarThemeDark =
AppBarTheme(systemOverlayStyle: systemOverlayStyleDark);
static const appBarThemeLight =
AppBarTheme(systemOverlayStyle: systemOverlayStyleLight);
Map<Themes, ThemeData> get _themeData => {
Themes.Light: ThemeData(
textTheme: textTheme,
@ -327,15 +351,7 @@ class Settings {
colorScheme: ColorScheme.fromSeed(seedColor: primaryColor),
bottomAppBarTheme: const BottomAppBarTheme(color: Color(0xfff5f5f5)),
useMaterial3: true,
appBarTheme: const AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.dark,
statusBarIconBrightness: Brightness.dark,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
appBarTheme: appBarThemeLight,
),
Themes.Dark: ThemeData(
textTheme: textTheme,
@ -347,15 +363,7 @@ class Settings {
brightness: Brightness.dark,
),
useMaterial3: true,
appBarTheme: const AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
appBarTheme: appBarThemeDark,
),
Themes.Deezer: ThemeData(
textTheme: textTheme,
@ -373,15 +381,7 @@ class Settings {
const BottomSheetThemeData(backgroundColor: deezerBottom),
cardColor: deezerBg,
useMaterial3: true,
appBarTheme: const AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
appBarTheme: appBarThemeDark,
),
Themes.Black: ThemeData(
textTheme: textTheme,
@ -402,15 +402,7 @@ class Settings {
BottomSheetThemeData(backgroundColor: _elevation1Black),
cardColor: _elevation1Black,
useMaterial3: true,
appBarTheme: const AppBarTheme(
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
appBarTheme: appBarThemeDark,
)
};

View File

@ -45,14 +45,13 @@ class CachedImage extends StatefulWidget {
final bool rounded;
const CachedImage(
{Key? key,
{super.key,
required this.url,
this.height,
this.width,
this.circular = false,
this.fullThumb = false,
this.rounded = false})
: super(key: key);
this.rounded = true});
@override
State<CachedImage> createState() => _CachedImageState();
@ -91,15 +90,15 @@ class _CachedImageState extends State<CachedImage> {
);
}
if (widget.rounded) {
return ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(4.0)),
if (widget.circular) {
return ClipOval(
child: child,
);
}
if (widget.circular) {
return ClipOval(
if (widget.rounded) {
return ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(4.0)),
child: child,
);
}

View File

@ -4,6 +4,7 @@ import 'dart:convert';
import 'dart:ui';
import 'dart:async';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:dynamic_color/dynamic_color.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:audio_service/audio_service.dart';
@ -333,7 +334,7 @@ class PlayerScreenVertical extends StatelessWidget {
),
const Flexible(child: BigAlbumArt()),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 24.0),
padding: const EdgeInsets.only(left: 24.0, right: 16.0),
child: PlayerTextSubtext(textSize: 24.spMax),
),
SeekBar(textSize: 14.spMax),
@ -378,7 +379,7 @@ class PlayerScreenDesktop extends StatelessWidget {
child: const BigAlbumArt(showLyricsButton: false)),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 24.0),
padding: const EdgeInsets.only(left: 24.0, right: 16.0),
child: PlayerTextSubtext(textSize: 22.h),
),
SeekBar(textSize: 16.h),
@ -509,7 +510,7 @@ class _FitOrScrollTextState extends State<FitOrScrollText> {
class PlayerTextSubtext extends StatelessWidget {
final double textSize;
const PlayerTextSubtext({Key? key, required this.textSize}) : super(key: key);
const PlayerTextSubtext({super.key, required this.textSize});
@override
Widget build(BuildContext context) {
@ -969,110 +970,133 @@ class _BigAlbumArtState extends State<BigAlbumArt> with WidgetsBindingObserver {
imageUrl: mediaItem.artUri.toString(), heroKey: mediaItem.id);
},
)),
child: Stack(
children: [
StreamBuilder<List<MediaItem>>(
stream: audioHandler.queue,
initialData: audioHandler.queue.valueOrNull,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return const Center(child: CircularProgressIndicator());
}
final queue = snapshot.data!;
return PageView.builder(
controller: _pageController,
onPageChanged: (int index) {
// ignore if not initiated by user.
if (!_userScroll) return;
Logger('BigAlbumArt')
.fine('page changed, skipping to media item');
if (queue[index].id == audioHandler.mediaItem.value?.id) {
return;
}
child: LayoutBuilder(
builder: (context, constraints) => Stack(
children: [
StreamBuilder<List<MediaItem>>(
stream: audioHandler.queue,
initialData: audioHandler.queue.valueOrNull,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return const Center(
child: CircularProgressIndicator());
}
final queue = snapshot.data!;
return PageView.builder(
controller: _pageController,
onPageChanged: (int index) {
// ignore if not initiated by user.
if (!_userScroll) return;
Logger('BigAlbumArt')
.fine('page changed, skipping to media item');
if (queue[index].id ==
audioHandler.mediaItem.value?.id) {
return;
}
audioHandler.skipToQueueItem(index);
},
itemCount: queue.length,
itemBuilder: (context, i) => Padding(
padding: const EdgeInsets.all(8.0),
child: Hero(
tag: queue[i].id,
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: CachedImage(
url: queue[i].artUri.toString(),
fullThumb: true,
),
),
audioHandler.skipToQueueItem(index);
},
itemCount: queue.length,
itemBuilder: (context, i) => Padding(
padding: const EdgeInsets.all(8.0),
child: Hero(
tag: queue[i].id,
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: CachedImage(
url: queue[i].artUri.toString(),
fullThumb: true,
),
),
),
));
}),
if (widget.showLyricsButton)
StreamBuilder<MediaItem?>(
initialData: audioHandler.mediaItem.valueOrNull,
stream: audioHandler.mediaItem,
builder: (context, snapshot) {
if (snapshot.data == null) {
return const SizedBox.shrink();
}
final l = snapshot.data!.extras?['lyrics'] == null
? null
: Lyrics.fromJson(
jsonDecode(snapshot.data!.extras!['lyrics']));
if (l == null || l.id == null || l.id == '0') {
return const SizedBox.shrink();
}
return Positioned(
key: const ValueKey('lyrics_button'),
bottom: 16.0,
right: 16.0,
child: LyricsButton(
onTap: _pushLyrics,
size: constraints.maxHeight / 20,
),
));
}),
if (widget.showLyricsButton)
StreamBuilder<MediaItem?>(
initialData: audioHandler.mediaItem.valueOrNull,
stream: audioHandler.mediaItem,
builder: (context, snapshot) {
if (snapshot.data == null) return const SizedBox.shrink();
print(snapshot.data!.extras);
final l = snapshot.data!.extras?['lyrics'] == null
? null
: Lyrics.fromJson(
jsonDecode(snapshot.data!.extras!['lyrics']));
if (l == null || l.id == null || l.id == '0') {
return const SizedBox.shrink();
}
return Positioned(
key: const ValueKey('lyrics_button'),
bottom: 16.0,
right: 16.0,
child: Consumer<BackgroundProvider>(
builder: (context, provider, child) => Material(
color: Color.lerp(
Theme.of(context).colorScheme.background,
provider.dominantColor,
0.25),
borderRadius: BorderRadius.circular(16.0),
clipBehavior: Clip.antiAlias,
child: child),
child: InkWell(
onTap: _pushLyrics,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 12.0, vertical: 4.0),
child: Row(mainAxisSize: MainAxisSize.min, children: [
const Icon(Icons.subtitles, size: 18.0),
const SizedBox(width: 8.0),
Text('Lyrics'.i18n),
]),
),
);
},
),
),
);
},
),
],
),
],
)),
);
return AspectRatio(
aspectRatio: 1.0,
child: settings.playerAlbumArtDropShadow
? Consumer<BackgroundProvider>(
builder: (context, background, child) => AnimatedContainer(
duration: const Duration(seconds: 1),
decoration: BoxDecoration(boxShadow: [
BoxShadow(
color: background.dominantColor ?? Colors.transparent,
spreadRadius: 0.0,
blurRadius: 100.0)
]),
child: child),
child: child,
)
: child,
return Center(
child: AspectRatio(
aspectRatio: 1.0,
child: settings.playerAlbumArtDropShadow
? Consumer<BackgroundProvider>(
builder: (context, background, child) => AnimatedContainer(
duration: const Duration(seconds: 1),
decoration: BoxDecoration(boxShadow: [
BoxShadow(
color:
(background.dominantColor ?? Colors.transparent)
.withOpacity(0.5),
spreadRadius: 20.0,
blurRadius: 150.0)
]),
child: child),
child: child,
)
: child,
),
);
}
}
class LyricsButton extends StatelessWidget {
final VoidCallback onTap;
final double size;
const LyricsButton({super.key, required this.onTap, this.size = 24.0});
@override
Widget build(BuildContext context) {
return Consumer<BackgroundProvider>(
builder: (context, provider, child) => Material(
color: Color.lerp(Theme.of(context).colorScheme.background,
provider.dominantColor, 0.25),
borderRadius: BorderRadius.circular(size * 2 / 3),
clipBehavior: Clip.antiAlias,
child: child),
child: InkWell(
onTap: onTap,
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: size / 1.25, vertical: size / 6),
child: Row(mainAxisSize: MainAxisSize.min, children: [
Icon(Icons.subtitles, size: size),
SizedBox(width: size / 3),
Text(
'Lyrics'.i18n,
style: TextStyle(fontSize: size * 0.8),
),
]),
),
),
);
}
}

View File

@ -765,6 +765,11 @@ class _QualityPickerState extends State<QualityPicker> {
settings.offlineQuality = _quality;
break;
}
audioHandler.customAction('updateQuality', {
'mobileQuality': settings.mobileQuality,
'wifiQuality': settings.wifiQuality,
});
await settings.save();
}

View File

@ -29,10 +29,10 @@ packages:
dependency: transitive
description:
name: args
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
url: "https://pub.dev"
source: hosted
version: "2.4.2"
version: "2.5.0"
asn1lib:
dependency: transitive
description:
@ -53,10 +53,10 @@ packages:
dependency: "direct main"
description:
name: audio_service
sha256: a4d989f1225ea9621898d60f23236dcbfc04876fa316086c23c5c4af075dbac4
sha256: "4547c312a94f9cb2c48b60823fb190767cbd63454a83c73049384d5d3cba4650"
url: "https://pub.dev"
source: hosted
version: "0.18.12"
version: "0.18.13"
audio_service_mpris:
dependency: "direct main"
description:
@ -77,18 +77,18 @@ packages:
dependency: transitive
description:
name: audio_service_web
sha256: "523e64ddc914c714d53eec2da85bba1074f08cf26c786d4efb322de510815ea7"
sha256: "9d7d5ae5f98a5727f2580fad73062f2484f400eef6cef42919413268e62a363e"
url: "https://pub.dev"
source: hosted
version: "0.1.1"
version: "0.1.2"
audio_session:
dependency: "direct main"
description:
name: audio_session
sha256: "6fdf255ed3af86535c96452c33ecff1245990bb25a605bfb1958661ccc3d467f"
sha256: a49af9981eec5d7cd73b37bacb6ee73f8143a6a9f9bd5b6021e6c346b9b6cf4e
url: "https://pub.dev"
source: hosted
version: "0.1.18"
version: "0.1.19"
boolean_selector:
dependency: transitive
description:
@ -133,10 +133,10 @@ packages:
dependency: "direct dev"
description:
name: build_runner
sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21"
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
url: "https://pub.dev"
source: hosted
version: "2.4.8"
version: "2.4.9"
build_runner_core:
dependency: transitive
description:
@ -157,10 +157,10 @@ packages:
dependency: transitive
description:
name: built_value
sha256: a3ec2e0f967bc47f69f95009bb93db936288d61d5343b9436e378b28a2f830c6
sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb
url: "https://pub.dev"
source: hosted
version: "8.9.0"
version: "8.9.2"
cached_network_image:
dependency: "direct main"
description:
@ -326,10 +326,10 @@ packages:
dependency: "direct main"
description:
name: dio
sha256: "797e1e341c3dd2f69f2dad42564a6feff3bfb87187d05abb93b9609e6f1645c3"
sha256: "11e40df547d418cc0c4900a9318b26304e665da6fa4755399a9ff9efd09034b5"
url: "https://pub.dev"
source: hosted
version: "5.4.0"
version: "5.4.3+1"
dio_cookie_manager:
dependency: "direct main"
description:
@ -350,10 +350,10 @@ packages:
dependency: "direct main"
description:
name: dynamic_color
sha256: a866f1f8947bfdaf674d7928e769eac7230388a2e7a2542824fad4bb5b87be3b
sha256: eae98052fa6e2826bdac3dd2e921c6ce2903be15c6b7f8b6d8a5d49b5086298d
url: "https://pub.dev"
source: hosted
version: "1.6.9"
version: "1.7.0"
encrypt:
dependency: "direct main"
description:
@ -422,18 +422,18 @@ packages:
dependency: "direct main"
description:
name: flex_color_picker
sha256: "0871edc170153cfc3de316d30625f40a85daecfa76ce541641f3cc0ec7757cbf"
sha256: "5c846437069fb7afdd7ade6bf37e628a71d2ab0787095ddcb1253bf9345d5f3a"
url: "https://pub.dev"
source: hosted
version: "3.3.1"
version: "3.4.1"
flex_seed_scheme:
dependency: transitive
description:
name: flex_seed_scheme
sha256: "29c12aba221eb8a368a119685371381f8035011d18de5ba277ad11d7dfb8657f"
sha256: "4cee2f1d07259f77e8b36f4ec5f35499d19e74e17c7dce5b819554914082bc01"
url: "https://pub.dev"
source: hosted
version: "1.4.0"
version: "1.5.0"
flutter:
dependency: "direct main"
description: flutter
@ -500,18 +500,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7
sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.0.2"
flutter_local_notifications:
dependency: "direct main"
description:
name: flutter_local_notifications
sha256: c18f1de98fe0bb9dd5ba91e1330d4febc8b6a7de6aae3ffe475ef423723e72f3
sha256: "55b9b229307a10974b26296ff29f2e132256ba4bd74266939118eaefa941cb00"
url: "https://pub.dev"
source: hosted
version: "16.3.2"
version: "16.3.3"
flutter_local_notifications_linux:
dependency: transitive
description:
@ -563,18 +563,18 @@ packages:
dependency: "direct main"
description:
name: fluttertoast
sha256: dfdde255317af381bfc1c486ed968d5a43a2ded9c931e87cbecd88767d6a71c1
sha256: "81b68579e23fcbcada2db3d50302813d2371664afe6165bc78148050ab94bf66"
url: "https://pub.dev"
source: hosted
version: "8.2.4"
version: "8.2.5"
freezed:
dependency: "direct dev"
description:
name: freezed
sha256: "57247f692f35f068cae297549a46a9a097100685c6780fe67177503eea5ed4e5"
sha256: a434911f643466d78462625df76fd9eb13e57348ff43fe1f77bbe909522c67a1
url: "https://pub.dev"
source: hosted
version: "2.4.7"
version: "2.5.2"
freezed_annotation:
dependency: "direct main"
description:
@ -587,10 +587,10 @@ packages:
dependency: transitive
description:
name: frontend_server_client
sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
url: "https://pub.dev"
source: hosted
version: "3.2.0"
version: "4.0.0"
get_it:
dependency: "direct main"
description:
@ -619,10 +619,10 @@ packages:
dependency: "direct main"
description:
name: google_fonts
sha256: f0b8d115a13ecf827013ec9fc883390ccc0e87a96ed5347a3114cac177ef18e8
sha256: "5b1726fee554d1cc9db1baef8061b126567ff0a1140a03ed7de936e62f2ab98b"
url: "https://pub.dev"
source: hosted
version: "6.1.0"
version: "6.2.0"
graphs:
dependency: transitive
description:
@ -635,10 +635,10 @@ packages:
dependency: transitive
description:
name: hashlib
sha256: "71bf102329ddb8e50c8a995ee4645ae7f1728bb65e575c17196b4d8262121a96"
sha256: "0f8ae37da8350f50576406a0554e272cb2ecee8501fd8772ffb0dfaab464cfaa"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.13.1"
hashlib_codecs:
dependency: transitive
description:
@ -803,18 +803,18 @@ packages:
dependency: "direct main"
description:
name: just_audio
sha256: b607cd1a43bac03d85c3aaee00448ff4a589ef2a77104e3d409889ff079bf823
sha256: b7cb6bbf3750caa924d03f432ba401ec300fd90936b3f73a9b33d58b1e96286b
url: "https://pub.dev"
source: hosted
version: "0.9.36"
version: "0.9.37"
just_audio_media_kit:
dependency: "direct main"
description:
name: just_audio_media_kit
sha256: d24b67a094d3a278ac483408b4313841386d1a67a737abd9b23f65a80bc06d29
sha256: bbecbd43959c230d9f9610df0e0165855e711b4c960ce730c08f31107cc3bd26
url: "https://pub.dev"
source: hosted
version: "2.0.2"
version: "2.0.4"
just_audio_platform_interface:
dependency: transitive
description:
@ -831,6 +831,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.4.9"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
url: "https://pub.dev"
source: hosted
version: "2.0.1"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
url: "https://pub.dev"
source: hosted
version: "2.0.1"
lints:
dependency: transitive
description:
@ -859,18 +883,18 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
version: "0.8.0"
media_kit:
dependency: transitive
description:
@ -879,14 +903,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.10+1"
media_kit_libs_ios_audio:
dependency: "direct main"
description:
name: media_kit_libs_ios_audio
sha256: "78ccf04e27d6b4ba00a355578ccb39b772f00d48269a6ac3db076edf2d51934f"
url: "https://pub.dev"
source: hosted
version: "1.1.4"
media_kit_libs_linux:
dependency: "direct main"
description:
@ -915,10 +931,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.11.0"
mime:
dependency: transitive
description:
@ -1035,26 +1051,26 @@ packages:
dependency: "direct main"
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
version: "1.9.0"
path_provider:
dependency: "direct main"
description:
name: path_provider
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.3"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
url: "https://pub.dev"
source: hosted
version: "2.2.2"
version: "2.2.4"
path_provider_foundation:
dependency: transitive
description:
@ -1099,10 +1115,10 @@ packages:
dependency: "direct main"
description:
name: permission_handler
sha256: "74e962b7fad7ff75959161bb2c0ad8fe7f2568ee82621c9c2660b751146bfe44"
sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb"
url: "https://pub.dev"
source: hosted
version: "11.3.0"
version: "11.3.1"
permission_handler_android:
dependency: transitive
description:
@ -1115,10 +1131,10 @@ packages:
dependency: transitive
description:
name: permission_handler_apple
sha256: bdafc6db74253abb63907f4e357302e6bb786ab41465e8635f362ee71fd8707b
sha256: e9ad66020b89ff1b63908f247c2c6f931c6e62699b756ef8b3c4569350cd8662
url: "https://pub.dev"
source: hosted
version: "9.4.0"
version: "9.4.4"
permission_handler_html:
dependency: transitive
description:
@ -1131,10 +1147,10 @@ packages:
dependency: transitive
description:
name: permission_handler_platform_interface
sha256: "23dfba8447c076ab5be3dee9ceb66aad345c4a648f0cac292c77b1eb0e800b78"
sha256: "48d4fcf201a1dad93ee869ab0d4101d084f49136ec82a8a06ed9cfeacab9fd20"
url: "https://pub.dev"
source: hosted
version: "4.2.0"
version: "4.2.1"
permission_handler_windows:
dependency: transitive
description:
@ -1179,10 +1195,10 @@ packages:
dependency: "direct main"
description:
name: pointycastle
sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29"
sha256: "70fe966348fe08c34bf929582f1d8247d9d9408130723206472b4687227e4333"
url: "https://pub.dev"
source: hosted
version: "3.7.4"
version: "3.8.0"
pool:
dependency: transitive
description:
@ -1195,10 +1211,10 @@ packages:
dependency: "direct main"
description:
name: provider
sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
url: "https://pub.dev"
source: hosted
version: "6.1.1"
version: "6.1.2"
pub_semver:
dependency: transitive
description:
@ -1227,10 +1243,10 @@ packages:
dependency: transitive
description:
name: quick_actions_android
sha256: adb42f20a46b22fee4caef421c00ff9eb209f9d441010bc5d6e9afa824288cf6
sha256: "58b9b36cad2fc5c5a6752e5eafdb20ab00697f11278ca7f206ecd7b85ec6c101"
url: "https://pub.dev"
source: hosted
version: "1.0.10"
version: "1.0.11"
quick_actions_ios:
dependency: transitive
description:
@ -1300,10 +1316,10 @@ packages:
dependency: transitive
description:
name: share_plus_platform_interface
sha256: df08bc3a07d01f5ea47b45d03ffcba1fa9cd5370fb44b3f38c70e42cced0f956
sha256: "251eb156a8b5fa9ce033747d73535bf53911071f8d3b6f4f0b578505ce0d4496"
url: "https://pub.dev"
source: hosted
version: "3.3.1"
version: "3.4.0"
shelf:
dependency: transitive
description:
@ -1361,10 +1377,10 @@ packages:
dependency: "direct main"
description:
name: spotify
sha256: "5c4d80a3d6a263c26d4922faf0cb9688234c721760ea3a0dd72e0172bb6fa72c"
sha256: "50bd5a07b580ee441d0b4d81227185ada768332c353671aa7555ea47cc68eb9e"
url: "https://pub.dev"
source: hosted
version: "0.13.1"
version: "0.13.5"
sprintf:
dependency: transitive
description:
@ -1473,10 +1489,10 @@ packages:
dependency: "direct main"
description:
name: tray_manager
sha256: "4ab709d70a4374af172f8c39e018db33a4271265549c6fc9d269a65e5f4b0225"
sha256: e0ac9a88b2700f366b8629b97e8663b6ef450a2f169560a685dc167bfe9c9c29
url: "https://pub.dev"
source: hosted
version: "0.2.1"
version: "0.2.2"
typed_data:
dependency: transitive
description:
@ -1537,26 +1553,26 @@ packages:
dependency: "direct main"
description:
name: url_launcher
sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c
sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e"
url: "https://pub.dev"
source: hosted
version: "6.2.4"
version: "6.2.6"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f"
sha256: "360a6ed2027f18b73c8d98e159dda67a61b7f2e0f6ec26e86c3ada33b0621775"
url: "https://pub.dev"
source: hosted
version: "6.2.2"
version: "6.3.1"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03"
sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5"
url: "https://pub.dev"
source: hosted
version: "6.2.4"
version: "6.2.5"
url_launcher_linux:
dependency: transitive
description:
@ -1577,10 +1593,10 @@ packages:
dependency: transitive
description:
name: url_launcher_platform_interface
sha256: a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.3.2"
url_launcher_web:
dependency: transitive
description:
@ -1601,10 +1617,10 @@ packages:
dependency: transitive
description:
name: uuid
sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8"
url: "https://pub.dev"
source: hosted
version: "3.0.7"
version: "4.4.0"
vector_math:
dependency: transitive
description:
@ -1621,6 +1637,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.0.2"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
version: "13.0.0"
wakelock_plus:
dependency: "direct main"
description:
@ -1673,10 +1697,10 @@ packages:
dependency: transitive
description:
name: webview_flutter_android
sha256: "3e5f4e9d818086b0d01a66fb1ff9cc72ab0cc58c71980e3d3661c5685ea0efb0"
sha256: f038ee2fae73b509dde1bc9d2c5a50ca92054282de17631a9a3d515883740934
url: "https://pub.dev"
source: hosted
version: "3.15.0"
version: "3.16.0"
webview_flutter_platform_interface:
dependency: transitive
description:
@ -1689,10 +1713,10 @@ packages:
dependency: transitive
description:
name: webview_flutter_wkwebview
sha256: "9bf168bccdf179ce90450b5f37e36fe263f591c9338828d6bf09b6f8d0f57f86"
sha256: f12f8d8a99784b863e8b85e4a9a5e3cf1839d6803d2c0c3e0533a8f3c5a992a7
url: "https://pub.dev"
source: hosted
version: "3.12.0"
version: "3.13.0"
win32:
dependency: transitive
description:

View File

@ -88,7 +88,6 @@ dependencies:
# Player libs for Linux and windows
media_kit_libs_linux: any
media_kit_libs_windows_audio: any
media_kit_libs_ios_audio: any
# Audio service plugin for Linux (MPRIS)
audio_service_mpris: ^0.1.3