diff --git a/lib/api/deezer.dart b/lib/api/deezer.dart index 2fa5c36..7e7ad41 100644 --- a/lib/api/deezer.dart +++ b/lib/api/deezer.dart @@ -477,6 +477,7 @@ class DeezerAPI { Future> getPlaylists() async { Map data = await callApi('deezer.pageProfile', params: {'nb': 2000, 'tab': 'playlists', 'user_id': userId}); + print(data); return data['results']['TAB']['playlists']['data'] .map((json) => Playlist.fromPrivateJson(json, library: true)) .toList(); diff --git a/lib/api/download/service_interface.dart b/lib/api/download/service_interface.dart index 134ac1e..4ea240d 100644 --- a/lib/api/download/service_interface.dart +++ b/lib/api/download/service_interface.dart @@ -41,6 +41,6 @@ class ServiceInterface { return service!.invoke(method, args); } - sendPort!.send({'_': method, if (args != null) ...args}); + sendPort.send({'_': method, if (args != null) ...args}); } } diff --git a/lib/api/player/audio_handler.dart b/lib/api/player/audio_handler.dart index 626f8f5..6cb7bbf 100644 --- a/lib/api/player/audio_handler.dart +++ b/lib/api/player/audio_handler.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:audio_service/audio_service.dart'; import 'package:audio_session/audio_session.dart'; import 'package:freezer/api/cache.dart'; @@ -480,7 +482,6 @@ class AudioPlayerTask extends BaseAudioHandler { if (queue.value.isNotEmpty) favoriteControl(), if (_queueIndex != 0) MediaControl.skipToPrevious, _player.playing ? MediaControl.pause : MediaControl.play, - MediaControl.stop, if (queue.hasValue && _queueIndex != queue.value.length - 1) MediaControl.skipToNext, ] @@ -491,7 +492,6 @@ class AudioPlayerTask extends BaseAudioHandler { action: MediaAction.rewind, ), // acts as prev-30 _player.playing ? MediaControl.pause : MediaControl.play, - MediaControl.stop, const MediaControl( androidIcon: 'drawable/ic_forward_30', label: 'forward 30', @@ -518,8 +518,8 @@ class AudioPlayerTask extends BaseAudioHandler { speed: _player.speed, queueIndex: _queueIndex, androidCompactActionIndices: List.generate(controls.length, (i) => i) - .whereNot((i) => controls[i].action == MediaAction.stop) - .toList(growable: false), + .toList(growable: false) + .sublist(max(0, controls.length - 3)), repeatMode: _repeatMode, shuffleMode: _originalQueue == null ? AudioServiceShuffleMode.none @@ -657,7 +657,6 @@ class AudioPlayerTask extends BaseAudioHandler { Future customAction(String name, [Map? 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; diff --git a/lib/main.dart b/lib/main.dart index ee9c7f6..7e75dc5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'dart:io'; -import 'package:audio_service/audio_service.dart'; import 'package:cookie_jar/cookie_jar.dart'; import 'package:dynamic_color/dynamic_color.dart'; import 'package:flutter/cupertino.dart'; diff --git a/lib/settings.dart b/lib/settings.dart index 6fe855a..9a663d4 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -2,7 +2,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:freezer/api/definitions.dart'; import 'package:freezer/api/download.dart'; -import 'package:freezer/api/player/audio_handler.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:json_annotation/json_annotation.dart'; diff --git a/lib/ui/menu.dart b/lib/ui/menu.dart index a0794da..20bb9ed 100644 --- a/lib/ui/menu.dart +++ b/lib/ui/menu.dart @@ -218,8 +218,8 @@ class MenuSheet { title: option.label, leading: option.icon, onTap: () { - option.onTap.call(); Navigator.pop(context); + option.onTap.call(); }, )) .toList(growable: false))), @@ -804,8 +804,7 @@ class _SleepTimerDialogState extends State { class SelectPlaylistDialog extends StatefulWidget { final Track? track; final Function? callback; - const SelectPlaylistDialog({this.track, this.callback, Key? key}) - : super(key: key); + const SelectPlaylistDialog({this.track, this.callback, super.key}); @override State createState() => _SelectPlaylistDialogState(); @@ -835,7 +834,7 @@ class _SelectPlaylistDialogState extends State { child: ErrorScreen(), ); } - if (snapshot.connectionState != ConnectionState.done) { + if (snapshot.data == null) { return const SizedBox( height: 100, child: Center( @@ -882,8 +881,7 @@ class CreatePlaylistDialog extends StatefulWidget { final List? tracks; //If playlist not null, update final Playlist? playlist; - const CreatePlaylistDialog({this.tracks, this.playlist, Key? key}) - : super(key: key); + const CreatePlaylistDialog({this.tracks, this.playlist, super.key}); @override State createState() => _CreatePlaylistDialogState(); diff --git a/lib/ui/queue_screen.dart b/lib/ui/queue_screen.dart index 1e0958e..de72b13 100644 --- a/lib/ui/queue_screen.dart +++ b/lib/ui/queue_screen.dart @@ -135,7 +135,7 @@ class _QueueListWidgetState extends State { final mediaItem = _queueCache[index]; final int itemId = mediaItem.extras!['id'] ?? 0; return Dismissible( - key: ValueKey(mediaItem.id.hashCode | itemId), + key: ValueKey(mediaItem.id.hashCode ^ itemId), background: _dismissibleBackground, secondaryBackground: _dismissibleSecondaryBackground, onDismissed: (_) { diff --git a/lib/ui/search.dart b/lib/ui/search.dart index 1ef50f9..69f5ac1 100644 --- a/lib/ui/search.dart +++ b/lib/ui/search.dart @@ -294,7 +294,8 @@ class _SearchScreenState extends State { ), ...List.generate(min(cache.searchHistory.length, 10), (int i) { - switch (cache.searchHistory[i]) { + switch (cache + .searchHistory[cache.searchHistory.length - i]) { case final Track data: return TrackTile.fromTrack( data, diff --git a/lib/ui/settings_screen.dart b/lib/ui/settings_screen.dart index 859f5d9..a27648a 100644 --- a/lib/ui/settings_screen.dart +++ b/lib/ui/settings_screen.dart @@ -18,7 +18,6 @@ import 'package:freezer/ui/login_on_other_device.dart'; import 'package:freezer/ui/login_screen.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:scrobblenaut/scrobblenaut.dart'; -import 'package:url_launcher/url_launcher.dart'; import 'package:freezer/api/cache.dart'; import 'package:freezer/api/deezer.dart';