New git, updated dependencies

This commit is contained in:
exttex 2021-03-16 20:35:50 +01:00
parent 66bfd5eb70
commit f49475e5a3
15 changed files with 231 additions and 974 deletions

View file

@ -46,6 +46,26 @@ class _LoginWidgetState extends State<LoginWidget> {
}
}
//Check if deezer available in current country
void _checkAvailability() async {
bool available = await DeezerAPI.chceckAvailability();
if (!(available??true)) {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text("Deezer is unavailable".i18n),
content: Text("Deezer is unavailable in your country, Freezer might not work properly. Please use a VPN".i18n),
actions: [
TextButton(
child: Text('Continue'.i18n),
onPressed: () => Navigator.of(context).pop(),
)
],
)
);
}
}
@override
void didUpdateWidget(LoginWidget oldWidget) {
_start();
@ -55,6 +75,7 @@ class _LoginWidgetState extends State<LoginWidget> {
@override
void initState() {
_start();
_checkAvailability();
super.initState();
}

View file

@ -31,6 +31,9 @@ import 'dart:async';
//Changing item in queue view and pressing back causes the pageView to skip song
bool pageViewLock = false;
//So can be updated when going back from lyrics
Function updateColor;
class PlayerScreen extends StatefulWidget {
@override
_PlayerScreenState createState() => _PlayerScreenState();
@ -86,7 +89,8 @@ class _PlayerScreenState extends State<PlayerScreen> {
_mediaItemSub = AudioService.currentMediaItemStream.listen((event) {
_updateColor();
});
updateColor = this._updateColor;
super.initState();
}
@ -361,10 +365,18 @@ class _PlayerScreenVerticalState extends State<PlayerScreenVertical> {
children: <Widget>[
IconButton(
icon: Icon(Icons.subtitles, size: ScreenUtil().setWidth(46)),
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
onPressed: () async {
//Fix bottom buttons
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: settings.themeData.bottomAppBarColor,
statusBarColor: Colors.transparent
));
await Navigator.of(context).push(MaterialPageRoute(
builder: (context) => LyricsScreen(trackId: AudioService.currentMediaItem.id)
));
updateColor();
},
),
QualityInfoWidget(),
@ -656,10 +668,18 @@ class PlayerScreenTopRow extends StatelessWidget {
icon: Icon(Icons.menu),
iconSize: this.iconSize??ScreenUtil().setSp(52),
splashRadius: this.iconSize??ScreenUtil().setWidth(52),
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
onPressed: () async {
//Fix bottom buttons
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: settings.themeData.bottomAppBarColor,
statusBarColor: Colors.transparent
));
//Navigate
await Navigator.of(context).push(MaterialPageRoute(
builder: (context) => QueueScreen()
));
//Fix colors
updateColor();
},
),
],

View file

@ -18,8 +18,6 @@ import 'package:freezer/ui/elements.dart';
import 'package:freezer/ui/error.dart';
import 'package:freezer/ui/home_screen.dart';
import 'package:freezer/ui/updater.dart';
import 'package:language_pickers/language_pickers.dart';
import 'package:language_pickers/languages.dart';
import 'package:package_info/package_info.dart';
import 'package:path_provider_ex/path_provider_ex.dart';
import 'package:permission_handler/permission_handler.dart';
@ -40,35 +38,6 @@ class SettingsScreen extends StatefulWidget {
class _SettingsScreenState extends State<SettingsScreen> {
List<Map<String, String>> _languages() {
//Missing language
defaultLanguagesList.add({
'name': 'Filipino',
'isoCode': 'fil'
});
defaultLanguagesList.add({
'name': 'Furry',
'isoCode': 'uwu'
});
defaultLanguagesList.add({
'name': 'Asturian',
'isoCode': 'ast'
});
defaultLanguagesList.add({
'name': 'Chinese',
'isoCode': 'zh'
});
List<Map<String, String>> _l = supportedLocales.map<Map<String, String>>((l) {
Map _lang = defaultLanguagesList.firstWhere((lang) => lang['isoCode'] == l.languageCode);
return {
'name': _lang['name'],
'isoCode': _lang['isoCode'],
'locale': l.toString()
};
}).toList();
return _l;
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -121,13 +90,13 @@ class _SettingsScreenState extends State<SettingsScreen> {
context: context,
builder: (context) => SimpleDialog(
title: Text('Select language'.i18n),
children: List.generate(_languages().length, (int i) {
Map l = _languages()[i];
children: List.generate(languages.length, (int i) {
Language l = languages[i];
return ListTile(
title: Text(l['name']),
subtitle: Text(l['locale']),
title: Text(l.name),
subtitle: Text("${l.locale}-${l.country}"),
onTap: () async {
setState(() => settings.language = l['locale']);
setState(() => settings.language = "${l.locale}_${l.country}");
await settings.save();
showDialog(
context: context,
@ -578,6 +547,50 @@ class _QualityPickerState extends State<QualityPicker> {
}
}
class ContentLanguage {
String code;
String name;
ContentLanguage(this.code, this.name);
static List<ContentLanguage> get all => [
ContentLanguage("cs", "Čeština"),
ContentLanguage("da", "Dansk"),
ContentLanguage("de", "Deutsch"),
ContentLanguage("en", "English"),
ContentLanguage("us", "English (us)"),
ContentLanguage("es", "Español"),
ContentLanguage("mx", "Español (latam)"),
ContentLanguage("fr", "Français"),
ContentLanguage("hr", "Hrvatski"),
ContentLanguage("id", "Indonesia"),
ContentLanguage("it", "Italiano"),
ContentLanguage("hu", "Magyar"),
ContentLanguage("ms", "Melayu"),
ContentLanguage("nl", "Nederlands"),
ContentLanguage("no", "Norsk"),
ContentLanguage("pl", "Polski"),
ContentLanguage("br", "Português (br)"),
ContentLanguage("pt", "Português (pt)"),
ContentLanguage("ro", "Română"),
ContentLanguage("sk", "Slovenčina"),
ContentLanguage("sl", "Slovenščina"),
ContentLanguage("sq", "Shqip"),
ContentLanguage("sr", "Srpski"),
ContentLanguage("fi", "Suomi"),
ContentLanguage("sv", "Svenska"),
ContentLanguage("tr", "Türkçe"),
ContentLanguage("bg", "Български"),
ContentLanguage("ru", "Pусский"),
ContentLanguage("uk", "Українська"),
ContentLanguage("he", "עִברִית"),
ContentLanguage("ar", "العربیة"),
ContentLanguage("cn", "中文"),
ContentLanguage("ja", "日本語"),
ContentLanguage("ko", "한국어"),
ContentLanguage("th", "ภาษาไทย"),
];
}
class DeezerSettings extends StatefulWidget {
@override
_DeezerSettingsState createState() => _DeezerSettingsState();
@ -597,17 +610,17 @@ class _DeezerSettingsState extends State<DeezerSettings> {
onTap: () {
showDialog(
context: context,
builder: (context) => LanguagePickerDialog(
titlePadding: EdgeInsets.all(8.0),
isSearchable: true,
builder: (context) => SimpleDialog(
title: Text('Select language'.i18n),
languagesList: defaultLanguagesList.map<Map<String, String>>((l) => {
'isoCode': l['isoCode'], 'name': l['name'] + ' (${l["isoCode"]})'
}).toList(),
onValuePicked: (Language language) {
setState(() => settings.deezerLanguage = language.isoCode);
settings.save();
},
children: List.generate(ContentLanguage.all.length, (i) => ListTile(
title: Text(ContentLanguage.all[i].name),
subtitle: Text(ContentLanguage.all[i].code),
onTap: () async {
setState(() => settings.deezerLanguage = ContentLanguage.all[i].code);
await settings.save();
Navigator.of(context).pop();
},
)),
)
);
},