all images round +
fix ios status bar clean up some code fix lyrics button size
This commit is contained in:
parent
f2f862a406
commit
36f8666906
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
107
lib/main.dart
107
lib/main.dart
|
@ -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(),
|
||||
},
|
||||
),
|
||||
)));
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
};
|
||||
|
||||
|
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
204
pubspec.lock
204
pubspec.lock
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue