From f801fb65f409b26a0d84719420133b1173302709 Mon Sep 17 00:00:00 2001 From: stonega Date: Wed, 4 Nov 2020 01:54:29 +0800 Subject: [PATCH] Minor change. --- lib/home/home.dart | 2 +- lib/podcasts/podcast_settings.dart | 2 +- lib/service/search_api.dart | 12 ++-- lib/settings/languages.dart | 93 +++++++++--------------------- lib/settings/settting.dart | 6 +- 5 files changed, 39 insertions(+), 76 deletions(-) diff --git a/lib/home/home.dart b/lib/home/home.dart index f83bc51..a0aa1f1 100644 --- a/lib/home/home.dart +++ b/lib/home/home.dart @@ -242,7 +242,7 @@ class _HomeState extends State with SingleTickerProviderStateMixin { ), ), Selector( - selector: (_, audio) => audio.playerRunning, + selector: (_, audio) => audio?.playerRunning ?? false, builder: (_, data, __) { return Padding( padding: EdgeInsets.only(bottom: data ? 60.0 : 0), diff --git a/lib/podcasts/podcast_settings.dart b/lib/podcasts/podcast_settings.dart index 8817938..b29e636 100644 --- a/lib/podcasts/podcast_settings.dart +++ b/lib/podcasts/podcast_settings.dart @@ -193,7 +193,7 @@ class _PodcastSettingState extends State { Widget build(BuildContext context) { final s = context.s; final groupList = context.watch(); - final textStyle = context.textTheme.bodyText1; + final textStyle = context.textTheme.bodyText2; return Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, diff --git a/lib/service/search_api.dart b/lib/service/search_api.dart index fccaba4..6a63f93 100644 --- a/lib/service/search_api.dart +++ b/lib/service/search_api.dart @@ -16,13 +16,15 @@ import '../type/search_api/searchpodcast.dart'; enum SearchEngine { podcastIndex, listenNotes } class ListenNotesSearch { + final _dio = Dio(BaseOptions(connectTimeout: 30000, receiveTimeout: 90000)); + final _baseUrl = "https://listen-api.listennotes.com/api/v2/"; final _apiKey = environment['apiKey']; Future> searchPodcasts( {String searchText, int nextOffset}) async { - var url = "https://listen-api.listennotes.com/api/v2/search?q=" + var url = "${_baseUrl}search?q=" "${Uri.encodeComponent(searchText)}${"&sort_by_date=0&type=podcast&offset=$nextOffset"}"; - var response = await Dio().get(url, + var response = await _dio.get(url, options: Options(headers: { 'X-ListenAPI-Key': "$_apiKey", 'Accept': "application/json" @@ -35,8 +37,8 @@ class ListenNotesSearch { Future> fetchEpisode( {String id, int nextEpisodeDate}) async { var url = - "https://listen-api.listennotes.com/api/v2/podcasts/$id?next_episode_pub_date=$nextEpisodeDate"; - var response = await Dio().get(url, + "${_baseUrl}podcasts/$id?next_episode_pub_date=$nextEpisodeDate"; + var response = await _dio.get(url, options: Options(headers: { 'X-ListenAPI-Key': "$_apiKey", 'Accept': "application/json" @@ -49,7 +51,7 @@ class ListenNotesSearch { Future> fetchBestPodcast( {String genre, int page, String region = 'us'}) async { var url = - "https://listen-api.listennotes.com/api/v2/best_podcasts?genre_id=$genre&page=$page®ion=$region"; + "${_baseUrl}best_podcasts?genre_id=$genre&page=$page®ion=$region"; var response = await Dio().get(url, options: Options(headers: { 'X-ListenAPI-Key': "$_apiKey", diff --git a/lib/settings/languages.dart b/lib/settings/languages.dart index 64cf62f..54a3695 100644 --- a/lib/settings/languages.dart +++ b/lib/settings/languages.dart @@ -15,6 +15,12 @@ class LanguagesSetting extends StatefulWidget { } class _LanguagesSettingState extends State { + @override + void initState() { + super.initState(); + findSystemLocale(); + } + _setLocale(Locale locale, {bool systemDefault = false}) async { var localeStorage = KeyValueStorage(localeKey); if (systemDefault) { @@ -43,15 +49,23 @@ class _LanguagesSettingState extends State { } } - @override - void initState() { - super.initState(); - findSystemLocale(); - } + Widget _langListTile(String lang, {Locale locale}) => ListTile( + title: Text(lang, style: context.textTheme.bodyText2), + onTap: () => _setLocale(locale), + dense: true, + contentPadding: const EdgeInsets.symmetric(horizontal: 20), + trailing: Transform.scale( + scale: 0.8, + child: Radio( + value: locale, + groupValue: Locale(Intl.getCurrentLocale()), + onChanged: _setLocale), + ), + ); @override Widget build(BuildContext context) { - final textStyle = context.textTheme.bodyText1; + final textStyle = context.textTheme.bodyText2; final s = context.s; return Column( children: [ @@ -63,75 +77,24 @@ class _LanguagesSettingState extends State { ? context.accentColor : null), ), + dense: true, onTap: () => _setLocale(Locale(Intl.systemLocale), systemDefault: true), contentPadding: const EdgeInsets.only(left: 20, right: 20), ), - Divider(height: 1), - ListTile( - title: Text('English',style: textStyle), - onTap: () => _setLocale(Locale('en')), - contentPadding: const EdgeInsets.only(left: 20, right: 20), - trailing: Radio( - value: Locale('en'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: _setLocale)), - Divider(height: 1), - ListTile( - title: Text('简体中文', style: textStyle), - onTap: () => _setLocale(Locale('zh_Hans')), - contentPadding: const EdgeInsets.only(left: 20, right: 20), - trailing: Radio( - value: Locale('zh_Hans'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: _setLocale, - )), - Divider(height: 1), - ListTile( - title: Text('Français', style: textStyle), - onTap: () => _setLocale(Locale('fr')), - contentPadding: const EdgeInsets.only(left: 20, right: 20), - trailing: Radio( - value: Locale('fr'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: _setLocale), - ), - Divider(height: 1), - ListTile( - title: Text('Español',style: textStyle), - onTap: () => _setLocale(Locale('es')), - contentPadding: const EdgeInsets.only(left: 20, right: 20), - trailing: Radio( - value: Locale('es'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: _setLocale), - ), - Divider(height: 1), - ListTile( - title: Text('Português',style: textStyle), - onTap: () => _setLocale(Locale('pt')), - contentPadding: const EdgeInsets.only(left: 20, right: 20), - trailing: Radio( - value: Locale('pt'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: _setLocale), - ), - Divider(height: 1), - ListTile( - title: Text('Italiano', style: textStyle), - onTap: () => _setLocale(Locale('it')), - contentPadding: const EdgeInsets.only(left: 20, right: 20), - trailing: Radio( - value: Locale('it'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: _setLocale), - ), + _langListTile('English', locale: Locale('en')), + _langListTile('简体中文', locale: Locale('zh_Hans')), + _langListTile('Français', locale: Locale('fr')), + _langListTile('Español', locale: Locale('es')), + _langListTile('Português', locale: Locale('pt')), + _langListTile('Italiano', locale: Locale('it')), Divider(height: 1), ListTile( onTap: () => 'mailto:?subject=Tsacdop localization project' .launchUrl, contentPadding: const EdgeInsets.only(left: 20, right: 20), + dense: true, title: Align( alignment: Alignment.centerLeft, child: Image( diff --git a/lib/settings/settting.dart b/lib/settings/settting.dart index 9ab7526..5be7384 100644 --- a/lib/settings/settting.dart +++ b/lib/settings/settting.dart @@ -30,6 +30,7 @@ class _SettingsState extends State { url.launchUrl; Navigator.pop(context); }, + dense: true, leading: Icon( icon, size: 20, @@ -37,6 +38,7 @@ class _SettingsState extends State { title: Text( name, maxLines: 2, + style: context.textTheme.bodyText2, ), ); @@ -193,18 +195,14 @@ class _SettingsState extends State { children: [ _feedbackItem(LineIcons.github, s.feedbackGithub, 'https://github.com/stonega/tsacdop/issues'), - Divider(height: 1), _feedbackItem(LineIcons.telegram, s.feedbackTelegram, 'https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg'), - Divider(height: 1), _feedbackItem( LineIcons.envelope_open_text_solid, s.feedbackEmail, 'mailto:?subject=Tsacdop Feedback'), - Divider(height: 1), _feedbackItem(LineIcons.google_play, s.feedbackPlay, 'https://play.google.com/store/apps/details?id=com.stonegate.tsacdop'), - Divider(height: 1), ], ), ),