New git, updated dependencies
This commit is contained in:
parent
66bfd5eb70
commit
f49475e5a3
15 changed files with 231 additions and 974 deletions
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
},
|
||||
),
|
||||
],
|
||||
|
|
|
@ -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();
|
||||
},
|
||||
)),
|
||||
)
|
||||
);
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue