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:label="Freezer"
android:requestLegacyExternalStorage="true" android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
android:targetSandboxVersion="2"> android:targetSandboxVersion="2"
android:enableOnBackInvokedCallback="true">
<service <service
android:name=".DownloadService" android:name=".DownloadService"

View File

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

View File

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

View File

@ -215,15 +215,7 @@ class _FreezerAppState extends State<FreezerApp> with WidgetsBindingObserver {
fontFamily: settings.fontFamily, fontFamily: settings.fontFamily,
colorScheme: lightScheme, colorScheme: lightScheme,
useMaterial3: true, useMaterial3: true,
appBarTheme: const AppBarTheme( appBarTheme: Settings.appBarThemeLight,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.dark,
statusBarIconBrightness: Brightness.dark,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
) )
: settings.themeData; : settings.themeData;
final darkTheme = settings.materialYouAccent final darkTheme = settings.materialYouAccent
@ -233,15 +225,7 @@ class _FreezerAppState extends State<FreezerApp> with WidgetsBindingObserver {
colorScheme: darkScheme, colorScheme: darkScheme,
useMaterial3: true, useMaterial3: true,
brightness: Brightness.dark, brightness: Brightness.dark,
appBarTheme: const AppBarTheme( appBarTheme: Settings.appBarThemeDark,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
) )
: null; : null;
return MaterialApp( return MaterialApp(
@ -259,19 +243,9 @@ class _FreezerAppState extends State<FreezerApp> with WidgetsBindingObserver {
GlobalCupertinoLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
], ],
supportedLocales: supportedLocales, supportedLocales: supportedLocales,
home: WillPopScope( home: I18n(
onWillPop: () async { initialLocale: _locale(),
if (navigatorKey.currentState!.canPop()) { child: const LoginMainWrapper(),
await navigatorKey.currentState!.maybePop();
return false;
}
// await MoveToBackground.moveTaskToBack();
return true;
},
child: I18n(
initialLocale: _locale(),
child: const LoginMainWrapper(),
),
), ),
navigatorKey: mainNavigatorKey, navigatorKey: mainNavigatorKey,
); );
@ -327,19 +301,8 @@ class _LoginMainWrapperState extends State<LoginMainWrapper> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (settings.arl == null) { if (settings.arl == null) {
return AnnotatedRegion<SystemUiOverlayStyle>( return LoginWidget(
value: (Theme.of(context).brightness == Brightness.dark callback: () => setState(() => {}),
? SystemUiOverlayStyle.dark
: SystemUiOverlayStyle.light)
.copyWith(
statusBarColor: Colors.transparent,
systemNavigationBarColor:
Colors.transparent, // Theme.of(context).scaffoldBackgroundColor,
statusBarIconBrightness: Brightness.light,
),
child: LoginWidget(
callback: () => setState(() => {}),
),
); );
} }
return const MainScreen(); return const MainScreen();
@ -436,7 +399,11 @@ class MainScreenState extends State<MainScreen>
type: 'favorites', type: 'favorites',
localizedTitle: 'Favorites'.i18n, localizedTitle: 'Favorites'.i18n,
icon: 'ic_favorites'), 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, focusNode: screenFocusNode,
skipTraversal: true, skipTraversal: true,
canRequestFocus: false, canRequestFocus: false,
child: _MainRouteNavigator( child: NavigatorPopHandler(
navigatorKey: navigatorKey, onPop: () => navigatorKey.currentState!.maybePop(),
routes: { child: _MainRouteNavigator(
Navigator.defaultRouteName: (context) => HomeScreen(), navigatorKey: navigatorKey,
'/podcasts': (context) => HomePageScreen( routes: {
cacheable: true, Navigator.defaultRouteName: (context) =>
channel: const DeezerChannel( const HomeScreen(),
target: 'channels/podcasts'), '/podcasts': (context) => HomePageScreen(
title: 'Podcasts'.i18n, cacheable: true,
), channel: const DeezerChannel(
'/library': (context) => const LibraryScreen(), target: 'channels/podcasts'),
'/library/tracks': (context) => const LibraryTracks(), title: 'Podcasts'.i18n,
'/library/albums': (context) => const LibraryAlbums(), ),
'/library/artists': (context) => const LibraryArtists(), '/library': (context) => const LibraryScreen(),
'/library/playlists': (context) => '/library/tracks': (context) => const LibraryTracks(),
const LibraryPlaylists(), '/library/albums': (context) => const LibraryAlbums(),
'/library/history': (context) => const HistoryScreen(), '/library/artists': (context) => const LibraryArtists(),
'/search': (context) => const SearchScreen(), '/library/playlists': (context) =>
'/settings': (context) => const SettingsScreen(), const LibraryPlaylists(),
'/downloads': (context) => const DownloadsScreen(), '/library/history': (context) => const HistoryScreen(),
'/spotify-importer': (context) => '/search': (context) => const SearchScreen(),
const SpotifyImporterV2(), '/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); 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 => { Map<Themes, ThemeData> get _themeData => {
Themes.Light: ThemeData( Themes.Light: ThemeData(
textTheme: textTheme, textTheme: textTheme,
@ -327,15 +351,7 @@ class Settings {
colorScheme: ColorScheme.fromSeed(seedColor: primaryColor), colorScheme: ColorScheme.fromSeed(seedColor: primaryColor),
bottomAppBarTheme: const BottomAppBarTheme(color: Color(0xfff5f5f5)), bottomAppBarTheme: const BottomAppBarTheme(color: Color(0xfff5f5f5)),
useMaterial3: true, useMaterial3: true,
appBarTheme: const AppBarTheme( appBarTheme: appBarThemeLight,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.dark,
statusBarIconBrightness: Brightness.dark,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
), ),
Themes.Dark: ThemeData( Themes.Dark: ThemeData(
textTheme: textTheme, textTheme: textTheme,
@ -347,15 +363,7 @@ class Settings {
brightness: Brightness.dark, brightness: Brightness.dark,
), ),
useMaterial3: true, useMaterial3: true,
appBarTheme: const AppBarTheme( appBarTheme: appBarThemeDark,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
), ),
Themes.Deezer: ThemeData( Themes.Deezer: ThemeData(
textTheme: textTheme, textTheme: textTheme,
@ -373,15 +381,7 @@ class Settings {
const BottomSheetThemeData(backgroundColor: deezerBottom), const BottomSheetThemeData(backgroundColor: deezerBottom),
cardColor: deezerBg, cardColor: deezerBg,
useMaterial3: true, useMaterial3: true,
appBarTheme: const AppBarTheme( appBarTheme: appBarThemeDark,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
), ),
Themes.Black: ThemeData( Themes.Black: ThemeData(
textTheme: textTheme, textTheme: textTheme,
@ -402,15 +402,7 @@ class Settings {
BottomSheetThemeData(backgroundColor: _elevation1Black), BottomSheetThemeData(backgroundColor: _elevation1Black),
cardColor: _elevation1Black, cardColor: _elevation1Black,
useMaterial3: true, useMaterial3: true,
appBarTheme: const AppBarTheme( appBarTheme: appBarThemeDark,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light,
systemNavigationBarIconBrightness: Brightness.light,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
)),
) )
}; };

View File

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

View File

@ -4,6 +4,7 @@ import 'dart:convert';
import 'dart:ui'; import 'dart:ui';
import 'dart:async'; import 'dart:async';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:dynamic_color/dynamic_color.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:audio_service/audio_service.dart'; import 'package:audio_service/audio_service.dart';
@ -333,7 +334,7 @@ class PlayerScreenVertical extends StatelessWidget {
), ),
const Flexible(child: BigAlbumArt()), const Flexible(child: BigAlbumArt()),
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 24.0), padding: const EdgeInsets.only(left: 24.0, right: 16.0),
child: PlayerTextSubtext(textSize: 24.spMax), child: PlayerTextSubtext(textSize: 24.spMax),
), ),
SeekBar(textSize: 14.spMax), SeekBar(textSize: 14.spMax),
@ -378,7 +379,7 @@ class PlayerScreenDesktop extends StatelessWidget {
child: const BigAlbumArt(showLyricsButton: false)), child: const BigAlbumArt(showLyricsButton: false)),
), ),
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 24.0), padding: const EdgeInsets.only(left: 24.0, right: 16.0),
child: PlayerTextSubtext(textSize: 22.h), child: PlayerTextSubtext(textSize: 22.h),
), ),
SeekBar(textSize: 16.h), SeekBar(textSize: 16.h),
@ -509,7 +510,7 @@ class _FitOrScrollTextState extends State<FitOrScrollText> {
class PlayerTextSubtext extends StatelessWidget { class PlayerTextSubtext extends StatelessWidget {
final double textSize; final double textSize;
const PlayerTextSubtext({Key? key, required this.textSize}) : super(key: key); const PlayerTextSubtext({super.key, required this.textSize});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -969,110 +970,133 @@ class _BigAlbumArtState extends State<BigAlbumArt> with WidgetsBindingObserver {
imageUrl: mediaItem.artUri.toString(), heroKey: mediaItem.id); imageUrl: mediaItem.artUri.toString(), heroKey: mediaItem.id);
}, },
)), )),
child: Stack( child: LayoutBuilder(
children: [ builder: (context, constraints) => Stack(
StreamBuilder<List<MediaItem>>( children: [
stream: audioHandler.queue, StreamBuilder<List<MediaItem>>(
initialData: audioHandler.queue.valueOrNull, stream: audioHandler.queue,
builder: (context, snapshot) { initialData: audioHandler.queue.valueOrNull,
if (!snapshot.hasData) { builder: (context, snapshot) {
return const Center(child: CircularProgressIndicator()); if (!snapshot.hasData) {
} return const Center(
final queue = snapshot.data!; child: CircularProgressIndicator());
return PageView.builder( }
controller: _pageController, final queue = snapshot.data!;
onPageChanged: (int index) { return PageView.builder(
// ignore if not initiated by user. controller: _pageController,
if (!_userScroll) return; onPageChanged: (int index) {
Logger('BigAlbumArt') // ignore if not initiated by user.
.fine('page changed, skipping to media item'); if (!_userScroll) return;
if (queue[index].id == audioHandler.mediaItem.value?.id) { Logger('BigAlbumArt')
return; .fine('page changed, skipping to media item');
} if (queue[index].id ==
audioHandler.mediaItem.value?.id) {
return;
}
audioHandler.skipToQueueItem(index); audioHandler.skipToQueueItem(index);
}, },
itemCount: queue.length, itemCount: queue.length,
itemBuilder: (context, i) => Padding( itemBuilder: (context, i) => Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Hero( child: Hero(
tag: queue[i].id, tag: queue[i].id,
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.circular(8.0), borderRadius: BorderRadius.circular(8.0),
child: CachedImage( child: CachedImage(
url: queue[i].artUri.toString(), url: queue[i].artUri.toString(),
fullThumb: true, 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( return Center(
aspectRatio: 1.0, child: AspectRatio(
child: settings.playerAlbumArtDropShadow aspectRatio: 1.0,
? Consumer<BackgroundProvider>( child: settings.playerAlbumArtDropShadow
builder: (context, background, child) => AnimatedContainer( ? Consumer<BackgroundProvider>(
duration: const Duration(seconds: 1), builder: (context, background, child) => AnimatedContainer(
decoration: BoxDecoration(boxShadow: [ duration: const Duration(seconds: 1),
BoxShadow( decoration: BoxDecoration(boxShadow: [
color: background.dominantColor ?? Colors.transparent, BoxShadow(
spreadRadius: 0.0, color:
blurRadius: 100.0) (background.dominantColor ?? Colors.transparent)
]), .withOpacity(0.5),
child: child), spreadRadius: 20.0,
child: child, blurRadius: 150.0)
) ]),
: child, 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; settings.offlineQuality = _quality;
break; break;
} }
audioHandler.customAction('updateQuality', {
'mobileQuality': settings.mobileQuality,
'wifiQuality': settings.wifiQuality,
});
await settings.save(); await settings.save();
} }

View File

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

View File

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