0.5.8 - queue reordering, bug and ui fixes, shortcut icon

This commit is contained in:
exttex 2020-10-16 20:54:04 +02:00
parent 396b51e90f
commit 9e18537b0c
39 changed files with 219 additions and 27 deletions

View file

@ -560,6 +560,7 @@ class _SleepTimerDialogState extends State<SleepTimerDialog> {
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Column(
mainAxisSize: MainAxisSize.min,

View file

@ -1,5 +1,6 @@
import 'package:audio_service/audio_service.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:freezer/settings.dart';
import '../api/player.dart';
@ -46,7 +47,12 @@ class PlayerBar extends StatelessWidget {
Container(
color: Theme.of(context).bottomAppBarColor,
child: ListTile(
onTap: () => Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => PlayerScreen())),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => PlayerScreen()));
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: settings.themeData.scaffoldBackgroundColor,
));
},
leading: CachedImage(
width: 50,
height: 50,

View file

@ -1,8 +1,10 @@
import 'package:flutter/material.dart';
import 'package:audio_service/audio_service.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:freezer/api/deezer.dart';
import 'package:freezer/api/player.dart';
import 'package:freezer/settings.dart';
import 'package:freezer/translations.i18n.dart';
import 'package:freezer/ui/menu.dart';
import 'package:freezer/ui/settings_screen.dart';
@ -25,6 +27,13 @@ class PlayerScreen extends StatefulWidget {
class _PlayerScreenState extends State<PlayerScreen> {
@override
void dispose() {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: settings.themeData.bottomAppBarColor,
));
super.dispose();
}
@override
Widget build(BuildContext context) {
@ -578,7 +587,7 @@ class PlayerScreenTopRow extends StatelessWidget {
Container(
width: this.textWidth??ScreenUtil().setWidth(550),
child: Text(
(short??false)?playerHelper.queueSource.text:'Playing from:'.i18n + ' ' + playerHelper.queueSource.text,
(short??false)?(playerHelper.queueSource.text??''):'Playing from:'.i18n + ' ' + (playerHelper.queueSource.text??''),
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left,
@ -779,9 +788,13 @@ class _QueueScreenState extends State<QueueScreen> {
)
],
),
body: ListView.builder(
itemCount: AudioService.queue.length,
itemBuilder: (context, i) {
body: ReorderableListView(
onReorder: (int oldIndex, int newIndex) async {
if (oldIndex == playerHelper.queueIndex) return;
await playerHelper.reorder(oldIndex, newIndex);
setState(() {});
},
children: List.generate(AudioService.queue.length, (int i) {
Track t = Track.fromMediaItem(AudioService.queue[i]);
return TrackTile(
t,
@ -789,12 +802,9 @@ class _QueueScreenState extends State<QueueScreen> {
await AudioService.playFromMediaId(t.id);
Navigator.of(context).pop();
},
onHold: () {
MenuSheet m = MenuSheet(context);
m.defaultTrackMenu(t);
},
key: Key(t.id),
);
},
}),
)
);
}

View file

@ -1,5 +1,6 @@
import 'package:connectivity/connectivity.dart';
import 'package:flutter/material.dart';
import 'package:freezer/api/cache.dart';
import 'package:freezer/api/download.dart';
import 'package:freezer/api/player.dart';
import 'package:freezer/ui/details_screens.dart';
@ -63,6 +64,10 @@ class _SearchScreenState extends State<SearchScreen> {
return;
}
//Add to search history
try {cache.searchHistory.remove(_query);} catch (_) {}
cache.searchHistory.add(_query);
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => SearchResultsScreen(_query, offline: _offline,))
);
@ -158,6 +163,19 @@ class _SearchScreenState extends State<SearchScreen> {
if (_loading)
LinearProgressIndicator(),
Divider(),
//History
if (cache.searchHistory.length > 0 && (_query??'').length == 0)
...List.generate(cache.searchHistory.length > 10 ? 10 : cache.searchHistory.length, (int i) => ListTile(
title: Text(cache.searchHistory[i]),
leading: Icon(Icons.history),
onTap: () {
setState(() => _query = cache.searchHistory[i]);
_submit(context);
},
)),
//Suggestions
...List.generate((_suggestions??[]).length, (i) => ListTile(
title: Text(_suggestions[i]),
leading: Icon(Icons.search),