Localize support, add zh_hans support

This commit is contained in:
stonegate 2020-07-02 20:58:55 +08:00
parent 6ad2c7dc44
commit 7e365dbb87
23 changed files with 2021 additions and 226 deletions

View File

@ -16,16 +16,20 @@ import 'package:intl/message_lookup_by_library.dart';
import 'package:intl/src/intl_helpers.dart';
import 'messages_en.dart' as messages_en;
import 'messages_zh-Hans.dart' as messages_zh_hans;
typedef Future<dynamic> LibraryLoader();
Map<String, LibraryLoader> _deferredLibraries = {
'en': () => new Future.value(null),
'zh_Hans': () => new Future.value(null),
};
MessageLookupByLibrary _findExact(String localeName) {
switch (localeName) {
case 'en':
return messages_en.messages;
case 'zh_Hans':
return messages_zh_hans.messages;
default:
return null;
}

View File

@ -21,18 +21,124 @@ class MessageLookup extends MessageLookupByLibrary {
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function> {
"all" : MessageLookupByLibrary.simpleMessage("All"),
"cancel" : MessageLookupByLibrary.simpleMessage("Cancel"),
"chooseA" : MessageLookupByLibrary.simpleMessage("Choose a"),
"color" : MessageLookupByLibrary.simpleMessage("color"),
"confirm" : MessageLookupByLibrary.simpleMessage("Confirm"),
"darkMode" : MessageLookupByLibrary.simpleMessage("Dark mode"),
"delete" : MessageLookupByLibrary.simpleMessage("Delete"),
"download" : MessageLookupByLibrary.simpleMessage("Download"),
"editName" : MessageLookupByLibrary.simpleMessage("Edit name"),
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("End of Episode"),
"feedbackEmail" : MessageLookupByLibrary.simpleMessage("Write to me"),
"feedbackGithub" : MessageLookupByLibrary.simpleMessage("Submit issue"),
"feedbackPlay" : MessageLookupByLibrary.simpleMessage("Rate on Play"),
"feedbackTelegram" : MessageLookupByLibrary.simpleMessage("Join group"),
"from" : MessageLookupByLibrary.simpleMessage("From"),
"groups" : MessageLookupByLibrary.simpleMessage("Groups"),
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("See All"),
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("Playlist"),
"homeSubMenuDownloaded" : MessageLookupByLibrary.simpleMessage("Downloaded"),
"homeSubMenuLikeData" : MessageLookupByLibrary.simpleMessage("Like Date"),
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("Sort by"),
"homeSubMenuUpdateDate" : MessageLookupByLibrary.simpleMessage("UpdateDate"),
"homeTabMenuDownload" : MessageLookupByLibrary.simpleMessage("Download"),
"homeSubMenuUpdateDate" : MessageLookupByLibrary.simpleMessage("Update Date"),
"homeTabMenuFavotite" : MessageLookupByLibrary.simpleMessage("Favorite"),
"homeTabMenuRecent" : MessageLookupByLibrary.simpleMessage("Recent"),
"homeToprightMenuAbout" : MessageLookupByLibrary.simpleMessage("About"),
"homeToprightMenuImportOMPL" : MessageLookupByLibrary.simpleMessage("Import OMPL"),
"homeToprightMenuRefreshAll" : MessageLookupByLibrary.simpleMessage("Refresh all"),
"homeToprightMenuSettings" : MessageLookupByLibrary.simpleMessage("Settings")
"homeToprightMenuSettings" : MessageLookupByLibrary.simpleMessage("Settings"),
"later" : MessageLookupByLibrary.simpleMessage("Later"),
"lightMode" : MessageLookupByLibrary.simpleMessage("Light mode"),
"like" : MessageLookupByLibrary.simpleMessage("Like"),
"liked" : MessageLookupByLibrary.simpleMessage("Liked"),
"listen" : MessageLookupByLibrary.simpleMessage("Listen"),
"listened" : MessageLookupByLibrary.simpleMessage("Listened"),
"markListened" : MessageLookupByLibrary.simpleMessage("Mark listened"),
"menu" : MessageLookupByLibrary.simpleMessage("Menu"),
"menuAllPodcasts" : MessageLookupByLibrary.simpleMessage("All podcasts"),
"menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("Mark All Listened"),
"menuMarkListened" : MessageLookupByLibrary.simpleMessage("Mark Listened"),
"menuViewRSS" : MessageLookupByLibrary.simpleMessage("Visit RSS Feed"),
"menuVisitSite" : MessageLookupByLibrary.simpleMessage("Visit Site"),
"network" : MessageLookupByLibrary.simpleMessage("Network"),
"newGroup" : MessageLookupByLibrary.simpleMessage("Create new group"),
"play" : MessageLookupByLibrary.simpleMessage("Play"),
"popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("Download episode"),
"popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("Add episode to playlist"),
"popupMenuLikeDes" : MessageLookupByLibrary.simpleMessage("Add episode to favorite"),
"popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("Mark episode as listened"),
"popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("Play the episode"),
"remove" : MessageLookupByLibrary.simpleMessage("Remove"),
"schedule" : MessageLookupByLibrary.simpleMessage("Schedule"),
"searchPodcast" : MessageLookupByLibrary.simpleMessage("Search podcast"),
"settingStorage" : MessageLookupByLibrary.simpleMessage("Storage"),
"settingsAccentColor" : MessageLookupByLibrary.simpleMessage("Accent color"),
"settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("Include the ovelay color"),
"settingsAppIntro" : MessageLookupByLibrary.simpleMessage("App Intro"),
"settingsAppearance" : MessageLookupByLibrary.simpleMessage("Appearance"),
"settingsAppearanceDes" : MessageLookupByLibrary.simpleMessage("Colors and themes"),
"settingsAudioCache" : MessageLookupByLibrary.simpleMessage("Audio cache"),
"settingsAudioCacheDes" : MessageLookupByLibrary.simpleMessage("Audio cache max size"),
"settingsAutoDelete" : MessageLookupByLibrary.simpleMessage("Auto delete downloads after"),
"settingsAutoDeleteDes" : MessageLookupByLibrary.simpleMessage("Default 30 days"),
"settingsAutoPlayDes" : MessageLookupByLibrary.simpleMessage("Auto play next episode in playlist"),
"settingsDefaultGrid" : MessageLookupByLibrary.simpleMessage("Default grid view"),
"settingsDefaultGridDownload" : MessageLookupByLibrary.simpleMessage("Download tab"),
"settingsDefaultGridFavorite" : MessageLookupByLibrary.simpleMessage("Favorite tab"),
"settingsDefaultGridPodcast" : MessageLookupByLibrary.simpleMessage("Podcast page"),
"settingsDefaultGridRecent" : MessageLookupByLibrary.simpleMessage("Recent tab"),
"settingsDiscovery" : MessageLookupByLibrary.simpleMessage("Discovery Features Again"),
"settingsEnableSyncing" : MessageLookupByLibrary.simpleMessage("Enable Syncing"),
"settingsEnableSyncingDes" : MessageLookupByLibrary.simpleMessage("Refresh all podcasts in the background to get leatest episodes"),
"settingsExport" : MessageLookupByLibrary.simpleMessage("Export"),
"settingsExportDes" : MessageLookupByLibrary.simpleMessage("Export OMPL file of all podcasts"),
"settingsFeedback" : MessageLookupByLibrary.simpleMessage("Feedback"),
"settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("Bugs and feature request"),
"settingsHistory" : MessageLookupByLibrary.simpleMessage("History"),
"settingsHistoryDes" : MessageLookupByLibrary.simpleMessage("Listen date"),
"settingsInfo" : MessageLookupByLibrary.simpleMessage("Info"),
"settingsInterface" : MessageLookupByLibrary.simpleMessage("Interface"),
"settingsLayout" : MessageLookupByLibrary.simpleMessage("Layout"),
"settingsLayoutDes" : MessageLookupByLibrary.simpleMessage("App layout"),
"settingsLibraries" : MessageLookupByLibrary.simpleMessage("Libraries"),
"settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("Open source libraries used in app"),
"settingsManageDownload" : MessageLookupByLibrary.simpleMessage("Manage download"),
"settingsManageDownloadDes" : MessageLookupByLibrary.simpleMessage("Manage downloaded audio files"),
"settingsMenuAutoPlay" : MessageLookupByLibrary.simpleMessage("Auto play next"),
"settingsNetworkCellular" : MessageLookupByLibrary.simpleMessage("Ask before using cellular data"),
"settingsNetworkCellularAuto" : MessageLookupByLibrary.simpleMessage("Auto download using cellular data"),
"settingsNetworkCellularAutoDes" : MessageLookupByLibrary.simpleMessage("You can set podcast auto download in group manage page"),
"settingsNetworkCellularDes" : MessageLookupByLibrary.simpleMessage("Ask to confirm when using cellulae data to download episodes"),
"settingsPlayDes" : MessageLookupByLibrary.simpleMessage("Playlist and player"),
"settingsPopupMenu" : MessageLookupByLibrary.simpleMessage("Episodes popup menu"),
"settingsPopupMenuDes" : MessageLookupByLibrary.simpleMessage("Change the popup menu of episode"),
"settingsPrefrence" : MessageLookupByLibrary.simpleMessage("Prefrence"),
"settingsRealDark" : MessageLookupByLibrary.simpleMessage("Real dark"),
"settingsRealDarkDes" : MessageLookupByLibrary.simpleMessage("Turn on if you think the night is not dark enough"),
"settingsSTAuto" : MessageLookupByLibrary.simpleMessage("Auto turn on sleep timer"),
"settingsSTAutoDes" : MessageLookupByLibrary.simpleMessage("Auto start sleep timer at scheduled time"),
"settingsSTDefaultTime" : MessageLookupByLibrary.simpleMessage("Default time"),
"settingsSTDefautTimeDes" : MessageLookupByLibrary.simpleMessage("Default time for sleep timer"),
"settingsSTMode" : MessageLookupByLibrary.simpleMessage("Auto sleep timer mode"),
"settingsStorageDes" : MessageLookupByLibrary.simpleMessage("Manange cache and download storage"),
"settingsSyncing" : MessageLookupByLibrary.simpleMessage("Syncing"),
"settingsSyncingDes" : MessageLookupByLibrary.simpleMessage("Refresh podcasts in the background"),
"settingsTheme" : MessageLookupByLibrary.simpleMessage("Theme"),
"settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("Update interval"),
"settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("Default 24 hours"),
"sleepTimer" : MessageLookupByLibrary.simpleMessage("Sleep timer"),
"subscribe" : MessageLookupByLibrary.simpleMessage("Subscribe"),
"systemDefault" : MessageLookupByLibrary.simpleMessage("System default"),
"to" : MessageLookupByLibrary.simpleMessage("To"),
"toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("Added to playlist"),
"toastDescovery" : MessageLookupByLibrary.simpleMessage("Discovery feature reopened, pleast restart the app"),
"toastFileError" : MessageLookupByLibrary.simpleMessage("File error, Subscribe failed"),
"toastFileNotVilid" : MessageLookupByLibrary.simpleMessage("File not vilid"),
"toastReadFile" : MessageLookupByLibrary.simpleMessage("Read file successfully"),
"toastRemovePlaylist" : MessageLookupByLibrary.simpleMessage("Removed from playlist"),
"unlike" : MessageLookupByLibrary.simpleMessage("Unlike"),
"unliked" : MessageLookupByLibrary.simpleMessage("Unliked")
};
}

View File

@ -0,0 +1,144 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a zh_Hans locale. All the
// messages from the main program should be duplicated here with the same
// function name.
// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names
import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
final messages = new MessageLookup();
typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'zh_Hans';
final messages = _notInlinedMessages(_notInlinedMessages);
static _notInlinedMessages(_) => <String, Function> {
"all" : MessageLookupByLibrary.simpleMessage("全部"),
"cancel" : MessageLookupByLibrary.simpleMessage("取消"),
"chooseA" : MessageLookupByLibrary.simpleMessage("选择"),
"color" : MessageLookupByLibrary.simpleMessage("颜色"),
"confirm" : MessageLookupByLibrary.simpleMessage("确认"),
"darkMode" : MessageLookupByLibrary.simpleMessage("夜晚模式"),
"delete" : MessageLookupByLibrary.simpleMessage("删除"),
"download" : MessageLookupByLibrary.simpleMessage("下载"),
"editName" : MessageLookupByLibrary.simpleMessage("修改组名"),
"endOfEpisode" : MessageLookupByLibrary.simpleMessage("节目结束"),
"feedbackEmail" : MessageLookupByLibrary.simpleMessage("发送邮件"),
"feedbackGithub" : MessageLookupByLibrary.simpleMessage("提交Issue"),
"feedbackPlay" : MessageLookupByLibrary.simpleMessage("Play评价"),
"feedbackTelegram" : MessageLookupByLibrary.simpleMessage("加入小组"),
"from" : MessageLookupByLibrary.simpleMessage(""),
"groups" : MessageLookupByLibrary.simpleMessage("分组"),
"homeGroupsSeeAll" : MessageLookupByLibrary.simpleMessage("查看全部"),
"homeMenuPlaylist" : MessageLookupByLibrary.simpleMessage("播放列表"),
"homeSubMenuDownloaded" : MessageLookupByLibrary.simpleMessage("已下载"),
"homeSubMenuLikeData" : MessageLookupByLibrary.simpleMessage("添加日期"),
"homeSubMenuSortBy" : MessageLookupByLibrary.simpleMessage("排序"),
"homeSubMenuUpdateDate" : MessageLookupByLibrary.simpleMessage("更新日期"),
"homeTabMenuFavotite" : MessageLookupByLibrary.simpleMessage("收藏"),
"homeTabMenuRecent" : MessageLookupByLibrary.simpleMessage("最近更新"),
"homeToprightMenuAbout" : MessageLookupByLibrary.simpleMessage("关于"),
"homeToprightMenuImportOMPL" : MessageLookupByLibrary.simpleMessage("导入OMPL"),
"homeToprightMenuRefreshAll" : MessageLookupByLibrary.simpleMessage("全部刷新"),
"homeToprightMenuSettings" : MessageLookupByLibrary.simpleMessage("设置"),
"later" : MessageLookupByLibrary.simpleMessage("稍后"),
"lightMode" : MessageLookupByLibrary.simpleMessage("明亮模式"),
"like" : MessageLookupByLibrary.simpleMessage("喜欢"),
"liked" : MessageLookupByLibrary.simpleMessage("已收藏"),
"listen" : MessageLookupByLibrary.simpleMessage("收听"),
"listened" : MessageLookupByLibrary.simpleMessage("已收听"),
"markListened" : MessageLookupByLibrary.simpleMessage("标记已收听"),
"menu" : MessageLookupByLibrary.simpleMessage("菜单"),
"menuAllPodcasts" : MessageLookupByLibrary.simpleMessage("所有订阅"),
"menuMarkAllListened" : MessageLookupByLibrary.simpleMessage("标记所有已收听"),
"menuMarkListened" : MessageLookupByLibrary.simpleMessage("标记已收听"),
"menuViewRSS" : MessageLookupByLibrary.simpleMessage("查看 RSS"),
"menuVisitSite" : MessageLookupByLibrary.simpleMessage("访问网站"),
"network" : MessageLookupByLibrary.simpleMessage("网络"),
"newGroup" : MessageLookupByLibrary.simpleMessage("创建分组"),
"play" : MessageLookupByLibrary.simpleMessage("播放"),
"popupMenuDownloadDes" : MessageLookupByLibrary.simpleMessage("下载节目"),
"popupMenuLaterDes" : MessageLookupByLibrary.simpleMessage("添加到播放列表"),
"popupMenuLikeDes" : MessageLookupByLibrary.simpleMessage("添加到收藏"),
"popupMenuMarkDes" : MessageLookupByLibrary.simpleMessage("设置为已收听"),
"popupMenuPlayDes" : MessageLookupByLibrary.simpleMessage("播放节目"),
"remove" : MessageLookupByLibrary.simpleMessage("移除"),
"schedule" : MessageLookupByLibrary.simpleMessage("定时"),
"searchPodcast" : MessageLookupByLibrary.simpleMessage("搜索播客"),
"settingStorage" : MessageLookupByLibrary.simpleMessage("储存空间"),
"settingsAccentColor" : MessageLookupByLibrary.simpleMessage("次要颜色"),
"settingsAccentColorDes" : MessageLookupByLibrary.simpleMessage("包括溢出颜色"),
"settingsAppIntro" : MessageLookupByLibrary.simpleMessage("引导页"),
"settingsAppearance" : MessageLookupByLibrary.simpleMessage("界面"),
"settingsAppearanceDes" : MessageLookupByLibrary.simpleMessage("颜色与主题"),
"settingsAudioCache" : MessageLookupByLibrary.simpleMessage("播放缓存"),
"settingsAudioCacheDes" : MessageLookupByLibrary.simpleMessage("播放缓存设置"),
"settingsAutoDelete" : MessageLookupByLibrary.simpleMessage("自动删除下载节目"),
"settingsAutoDeleteDes" : MessageLookupByLibrary.simpleMessage("默认 30 天"),
"settingsAutoPlayDes" : MessageLookupByLibrary.simpleMessage("自动播放下一节目"),
"settingsDefaultGrid" : MessageLookupByLibrary.simpleMessage("默认布局"),
"settingsDefaultGridDownload" : MessageLookupByLibrary.simpleMessage("下载页"),
"settingsDefaultGridFavorite" : MessageLookupByLibrary.simpleMessage("收藏页"),
"settingsDefaultGridPodcast" : MessageLookupByLibrary.simpleMessage("播客页"),
"settingsDefaultGridRecent" : MessageLookupByLibrary.simpleMessage("最近页"),
"settingsDiscovery" : MessageLookupByLibrary.simpleMessage("再次功能介绍"),
"settingsEnableSyncing" : MessageLookupByLibrary.simpleMessage("开启自动更新"),
"settingsEnableSyncingDes" : MessageLookupByLibrary.simpleMessage("在后台更新所有订阅播客"),
"settingsExport" : MessageLookupByLibrary.simpleMessage("导出"),
"settingsExportDes" : MessageLookupByLibrary.simpleMessage("导出 OMPL 文件"),
"settingsFeedback" : MessageLookupByLibrary.simpleMessage("反馈"),
"settingsFeedbackDes" : MessageLookupByLibrary.simpleMessage("意见与建议"),
"settingsHistory" : MessageLookupByLibrary.simpleMessage("历史记录"),
"settingsHistoryDes" : MessageLookupByLibrary.simpleMessage("播放日期"),
"settingsInfo" : MessageLookupByLibrary.simpleMessage("信息"),
"settingsInterface" : MessageLookupByLibrary.simpleMessage("界面"),
"settingsLayout" : MessageLookupByLibrary.simpleMessage("布局"),
"settingsLayoutDes" : MessageLookupByLibrary.simpleMessage("应用布局"),
"settingsLibraries" : MessageLookupByLibrary.simpleMessage("开源"),
"settingsLibrariesDes" : MessageLookupByLibrary.simpleMessage("使用开源项目"),
"settingsManageDownload" : MessageLookupByLibrary.simpleMessage("下载管理"),
"settingsManageDownloadDes" : MessageLookupByLibrary.simpleMessage("管理下载节目文件"),
"settingsMenuAutoPlay" : MessageLookupByLibrary.simpleMessage("自动播放下一节目"),
"settingsNetworkCellular" : MessageLookupByLibrary.simpleMessage("蜂窝数据确认"),
"settingsNetworkCellularAuto" : MessageLookupByLibrary.simpleMessage("是否用蜂窝数据自动下载"),
"settingsNetworkCellularAutoDes" : MessageLookupByLibrary.simpleMessage("你可以在分组管理页面设置自动下载"),
"settingsNetworkCellularDes" : MessageLookupByLibrary.simpleMessage("在使用蜂窝数据下载前确认"),
"settingsPlayDes" : MessageLookupByLibrary.simpleMessage("播放列表和播放器"),
"settingsPopupMenu" : MessageLookupByLibrary.simpleMessage("节目弹出菜单"),
"settingsPopupMenuDes" : MessageLookupByLibrary.simpleMessage("修改节目弹出菜单"),
"settingsPrefrence" : MessageLookupByLibrary.simpleMessage("首选项"),
"settingsRealDark" : MessageLookupByLibrary.simpleMessage("真的黑"),
"settingsRealDarkDes" : MessageLookupByLibrary.simpleMessage("如果夜不够黑,请开启"),
"settingsSTAuto" : MessageLookupByLibrary.simpleMessage("自动睡眠模式"),
"settingsSTAutoDes" : MessageLookupByLibrary.simpleMessage("定期开启睡眠模式"),
"settingsSTDefaultTime" : MessageLookupByLibrary.simpleMessage("默认时长"),
"settingsSTDefautTimeDes" : MessageLookupByLibrary.simpleMessage("睡眠模式默认时长"),
"settingsSTMode" : MessageLookupByLibrary.simpleMessage("自动睡眠模式默认时长"),
"settingsStorageDes" : MessageLookupByLibrary.simpleMessage("管理缓存和下载空间"),
"settingsSyncing" : MessageLookupByLibrary.simpleMessage("同步"),
"settingsSyncingDes" : MessageLookupByLibrary.simpleMessage("在后台更新播客"),
"settingsTheme" : MessageLookupByLibrary.simpleMessage("主题"),
"settingsUpdateInterval" : MessageLookupByLibrary.simpleMessage("更新频率"),
"settingsUpdateIntervalDes" : MessageLookupByLibrary.simpleMessage("默认 24 小时"),
"sleepTimer" : MessageLookupByLibrary.simpleMessage("睡眠模式"),
"subscribe" : MessageLookupByLibrary.simpleMessage("订阅"),
"systemDefault" : MessageLookupByLibrary.simpleMessage("系统默认"),
"to" : MessageLookupByLibrary.simpleMessage(""),
"toastAddPlaylist" : MessageLookupByLibrary.simpleMessage("添加到播放列表"),
"toastDescovery" : MessageLookupByLibrary.simpleMessage("重启应用后可查看"),
"toastFileError" : MessageLookupByLibrary.simpleMessage("文件错误,导入失败"),
"toastFileNotVilid" : MessageLookupByLibrary.simpleMessage("文件错误"),
"toastReadFile" : MessageLookupByLibrary.simpleMessage("读取文件成功"),
"toastRemovePlaylist" : MessageLookupByLibrary.simpleMessage("从播放列表移除"),
"unlike" : MessageLookupByLibrary.simpleMessage("取消喜欢"),
"unliked" : MessageLookupByLibrary.simpleMessage("从收藏移除")
};
}

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,6 @@ import '../util/customslider.dart';
import '../episodes/episodedetail.dart';
import 'playlist.dart';
import 'audiopanel.dart';
import 'share.dart';
final List<BoxShadow> _customShadow = [
BoxShadow(blurRadius: 26, offset: Offset(-6, -6), color: Colors.white),

View File

@ -94,6 +94,7 @@ class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
double height = (width - 20) / 3 + 140;
final s = context.s;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
systemNavigationBarIconBrightness:
@ -342,13 +343,13 @@ class _HomeState extends State<Home> with SingleTickerProviderStateMixin {
controller: _controller,
tabs: <Widget>[
Tab(
child: Text('Recent'),
child: Text(s.homeTabMenuRecent),
),
Tab(
child: Text('Favorite'),
child: Text(s.homeTabMenuFavotite),
),
Tab(
child: Text('Download'),
child: Text(s.download),
)
],
),
@ -547,6 +548,7 @@ class PlaylistButtonState extends State<PlaylistButton> {
@override
Widget build(BuildContext context) {
var audio = Provider.of<AudioPlayerNotifier>(context, listen: false);
final s = context.s;
return MyPopupMenuButton<int>(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10))),
@ -651,7 +653,7 @@ class PlaylistButtonState extends State<PlaylistButton> {
Padding(
padding: EdgeInsets.symmetric(horizontal: 5.0),
),
Text('Playlist'),
Text(s.homeMenuPlaylist),
],
),
),
@ -727,6 +729,7 @@ class _RecentUpdateState extends State<_RecentUpdate>
Widget build(BuildContext context) {
super.build(context);
var audio = Provider.of<AudioPlayerNotifier>(context, listen: false);
final s = context.s;
return Selector<SubscribeWorker, bool>(
selector: (_, worker) => worker.created,
builder: (context, created, child) {
@ -1050,6 +1053,7 @@ class _MyFavoriteState extends State<_MyFavorite>
@override
Widget build(BuildContext context) {
super.build(context);
final s = context.s;
return Selector<AudioPlayerNotifier, bool>(
selector: (_, audio) => audio.episodeState,
builder: (context, episodeState, child) {
@ -1108,7 +1112,7 @@ class _MyFavoriteState extends State<_MyFavorite>
mainAxisSize:
MainAxisSize.min,
children: <Widget>[
Text('Sory by'),
Text(s.homeSubMenuSortBy),
Padding(
padding:
EdgeInsets.symmetric(
@ -1259,6 +1263,7 @@ class _MyDownloadState extends State<_MyDownload>
@override
Widget build(BuildContext context) {
super.build(context);
final s = context.s;
return CustomScrollView(
key: PageStorageKey<String>('download_list'),
slivers: <Widget>[
@ -1273,7 +1278,7 @@ class _MyDownloadState extends State<_MyDownload>
children: <Widget>[
Container(
padding: EdgeInsets.symmetric(horizontal: 20),
child: Text('Downloaded')),
child: Text(s.homeSubMenuDownloaded)),
Spacer(),
Material(
color: Colors.transparent,

View File

@ -7,7 +7,6 @@ import 'package:focused_menu/focused_menu.dart';
import 'package:focused_menu/modals.dart';
import 'package:provider/provider.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:tsacdop/util/episodegrid.dart';
import 'package:tuple/tuple.dart';
import 'package:line_icons/line_icons.dart';

View File

@ -15,6 +15,7 @@ import 'package:intl/intl.dart';
import '../settings/settting.dart';
import '../state/refresh_podcast.dart';
import '../state/subscribe_podcast.dart';
import '../util/context_extension.dart';
import 'about.dart';
class OmplOutline {
@ -70,7 +71,7 @@ class _PopupMenuState extends State<PopupMenu> {
Widget build(BuildContext context) {
var refreshWorker = Provider.of<RefreshWorker>(context, listen: false);
var subscribeWorker = Provider.of<SubscribeWorker>(context, listen: false);
final s = context.s;
void _saveOmpl(String path) async {
File file = File(path);
try {
@ -150,7 +151,7 @@ class _PopupMenuState extends State<PopupMenu> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Refresh All',
s.homeToprightMenuRefreshAll,
),
FutureBuilder<String>(
future: _getRefreshDate(),
@ -179,7 +180,7 @@ class _PopupMenuState extends State<PopupMenu> {
Padding(
padding: EdgeInsets.symmetric(horizontal: 5.0),
),
Text('Import OMPL'),
Text(s.homeToprightMenuImportOMPL),
],
),
),
@ -194,7 +195,7 @@ class _PopupMenuState extends State<PopupMenu> {
Padding(
padding: EdgeInsets.symmetric(horizontal: 5.0),
),
Text('Settings'),
Text(s.homeToprightMenuSettings),
],
),
),
@ -209,7 +210,7 @@ class _PopupMenuState extends State<PopupMenu> {
Padding(
padding: EdgeInsets.symmetric(horizontal: 5.0),
),
Text('About'),
Text(s.homeToprightMenuAbout),
],
),
),

View File

@ -1,15 +1,241 @@
{
"homeToprightMenuRefreshAll": "Refresh all",
"homeToprightMenuImportOMPL": "Import OMPL",
"homeToprightMenuSettings": "Settings",
"homeToprightMenuAbout": "About",
"homeGroupsSeeAll": "See All",
"homeTabMenuRecent": "Recent",
"homeTabMenuFavotite": "Favorite",
"homeTabMenuDownload": "Download",
"homeMenuPlaylist": "Playlist",
"homeSubMenuSortBy": "Sort by",
"homeSubMenuUpdateDate": "UpdateDate",
"homeSubMenuLikeData": "Like Date",
"homeSubMenuDownloaded": "Downloaded"
"@@locale": "en",
"all": "All",
"@all": {},
"cancel": "Cancel",
"@cancel": {},
"chooseA": "Choose a",
"@chooseA": {},
"color": "color",
"@color": {},
"confirm": "Confirm",
"@confirm": {},
"darkMode": "Dark mode",
"@darkMode": {},
"delete": "Delete",
"@delete": {},
"download": "Download",
"@download": {},
"editName": "Edit name",
"@editName": {},
"endOfEpisode": "End of Episode",
"@endOfEpisode": {},
"feedbackEmail": "Write to me",
"@feedbackEmail": {},
"feedbackGithub": "Submit issue",
"@feedbackGithub": {},
"feedbackPlay": "Rate on Play",
"@feedbackPlay": {},
"feedbackTelegram": "Join group",
"@feedbackTelegram": {},
"from": "From",
"@from": {},
"groups": "Groups",
"@groups": {},
"homeGroupsSeeAll": "See All",
"@homeGroupsSeeAll": {},
"homeMenuPlaylist": "Playlist",
"@homeMenuPlaylist": {},
"homeSubMenuDownloaded": "Downloaded",
"@homeSubMenuDownloaded": {},
"homeSubMenuLikeData": "Like Date",
"@homeSubMenuLikeData": {},
"homeSubMenuSortBy": "Sort by",
"@homeSubMenuSortBy": {},
"homeSubMenuUpdateDate": "Update Date",
"@homeSubMenuUpdateDate": {},
"homeTabMenuFavotite": "Favorite",
"@homeTabMenuFavotite": {},
"homeTabMenuRecent": "Recent",
"@homeTabMenuRecent": {},
"homeToprightMenuAbout": "About",
"@homeToprightMenuAbout": {},
"homeToprightMenuImportOMPL": "Import OMPL",
"@homeToprightMenuImportOMPL": {},
"homeToprightMenuRefreshAll": "Refresh all",
"@homeToprightMenuRefreshAll": {},
"homeToprightMenuSettings": "Settings",
"@homeToprightMenuSettings": {},
"later": "Later",
"@later": {},
"lightMode": "Light mode",
"@lightMode": {},
"like": "Like",
"@like": {},
"liked": "Liked",
"@liked": {},
"listen": "Listen",
"@listen": {},
"listened": "Listened",
"@listened": {},
"markListened": "Mark listened",
"@markListened": {},
"menu": "Menu",
"@menu": {},
"menuAllPodcasts": "All podcasts",
"@menuAllPodcasts": {},
"menuMarkAllListened": "Mark All Listened",
"@menuMarkAllListened": {},
"menuMarkListened": "Mark Listened",
"@menuMarkListened": {},
"menuViewRSS": "Visit RSS Feed",
"@menuViewRSS": {},
"menuVisitSite": "Visit Site",
"@menuVisitSite": {},
"network": "Network",
"@network": {},
"newGroup": "Create new group",
"@newGroup": {},
"play": "Play",
"@play": {},
"popupMenuDownloadDes": "Download episode",
"@popupMenuDownloadDes": {},
"popupMenuLaterDes": "Add episode to playlist",
"@popupMenuLaterDes": {},
"popupMenuLikeDes": "Add episode to favorite",
"@popupMenuLikeDes": {},
"popupMenuMarkDes": "Mark episode as listened",
"@popupMenuMarkDes": {},
"popupMenuPlayDes": "Play the episode",
"@popupMenuPlayDes": {},
"remove": "Remove",
"@remove": {},
"schedule": "Schedule",
"@schedule": {},
"searchPodcast": "Search podcast",
"@searchPodcast": {},
"settingsAccentColor": "Accent color",
"@settingsAccentColor": {},
"settingsAccentColorDes": "Include the ovelay color",
"@settingsAccentColorDes": {},
"settingsAppearance": "Appearance",
"@settingsAppearance": {},
"settingsAppearanceDes": "Colors and themes",
"@settingsAppearanceDes": {},
"settingsAppIntro": "App Intro",
"@settingsAppIntro": {},
"settingsAudioCache": "Audio cache",
"@settingsAudioCache": {},
"settingsAudioCacheDes": "Audio cache max size",
"@settingsAudioCacheDes": {},
"settingsAutoDelete": "Auto delete downloads after",
"@settingsAutoDelete": {},
"settingsAutoDeleteDes": "Default 30 days",
"@settingsAutoDeleteDes": {},
"settingsAutoPlayDes": "Auto play next episode in playlist",
"@settingsAutoPlayDes": {},
"settingsDefaultGrid": "Default grid view",
"@settingsDefaultGrid": {},
"settingsDefaultGridDownload": "Download tab",
"@settingsDefaultGridDownload": {},
"settingsDefaultGridFavorite": "Favorite tab",
"@settingsDefaultGridFavorite": {},
"settingsDefaultGridPodcast": "Podcast page",
"@settingsDefaultGridPodcast": {},
"settingsDefaultGridRecent": "Recent tab",
"@settingsDefaultGridRecent": {},
"settingsDiscovery": "Discovery Features Again",
"@settingsDiscovery": {},
"settingsEnableSyncing": "Enable Syncing",
"@settingsEnableSyncing": {},
"settingsEnableSyncingDes": "Refresh all podcasts in the background to get leatest episodes",
"@settingsEnableSyncingDes": {},
"settingsExport": "Export",
"@settingsExport": {},
"settingsExportDes": "Export OMPL file of all podcasts",
"@settingsExportDes": {},
"settingsFeedback": "Feedback",
"@settingsFeedback": {},
"settingsFeedbackDes": "Bugs and feature request",
"@settingsFeedbackDes": {},
"settingsHistory": "History",
"@settingsHistory": {},
"settingsHistoryDes": "Listen date",
"@settingsHistoryDes": {},
"settingsInfo": "Info",
"@settingsInfo": {},
"settingsInterface": "Interface",
"@settingsInterface": {},
"settingsLayout": "Layout",
"@settingsLayout": {},
"settingsLayoutDes": "App layout",
"@settingsLayoutDes": {},
"settingsLibraries": "Libraries",
"@settingsLibraries": {},
"settingsLibrariesDes": "Open source libraries used in app",
"@settingsLibrariesDes": {},
"settingsManageDownload": "Manage download",
"@settingsManageDownload": {},
"settingsManageDownloadDes": "Manage downloaded audio files",
"@settingsManageDownloadDes": {},
"settingsMenuAutoPlay": "Auto play next",
"@settingsMenuAutoPlay": {},
"settingsNetworkCellular": "Ask before using cellular data",
"@settingsNetworkCellular": {},
"settingsNetworkCellularAuto": "Auto download using cellular data",
"@settingsNetworkCellularAuto": {},
"settingsNetworkCellularAutoDes": "You can set podcast auto download in group manage page",
"@settingsNetworkCellularAutoDes": {},
"settingsNetworkCellularDes": "Ask to confirm when using cellulae data to download episodes",
"@settingsNetworkCellularDes": {},
"settingsPlayDes": "Playlist and player",
"@settingsPlayDes": {},
"settingsPopupMenu": "Episodes popup menu",
"@settingsPopupMenu": {},
"settingsPopupMenuDes": "Change the popup menu of episode",
"@settingsPopupMenuDes": {},
"settingsPrefrence": "Prefrence",
"@settingsPrefrence": {},
"settingsRealDark": "Real dark",
"@settingsRealDark": {},
"settingsRealDarkDes": "Turn on if you think the night is not dark enough",
"@settingsRealDarkDes": {},
"settingsSTAuto": "Auto turn on sleep timer",
"@settingsSTAuto": {},
"settingsSTAutoDes": "Auto start sleep timer at scheduled time",
"@settingsSTAutoDes": {},
"settingsSTDefaultTime": "Default time",
"@settingsSTDefaultTime": {},
"settingsSTDefautTimeDes": "Default time for sleep timer",
"@settingsSTDefautTimeDes": {},
"settingsSTMode": "Auto sleep timer mode",
"@settingsSTMode": {},
"settingsStorageDes": "Manange cache and download storage",
"@settingsStorageDes": {},
"settingsSyncing": "Syncing",
"@settingsSyncing": {},
"settingsSyncingDes": "Refresh podcasts in the background",
"@settingsSyncingDes": {},
"settingsTheme": "Theme",
"@settingsTheme": {},
"settingStorage": "Storage",
"@settingStorage": {},
"settingsUpdateInterval": "Update interval",
"@settingsUpdateInterval": {},
"settingsUpdateIntervalDes": "Default 24 hours",
"@settingsUpdateIntervalDes": {},
"sleepTimer": "Sleep timer",
"@sleepTimer": {},
"subscribe": "Subscribe",
"@subscribe": {},
"systemDefault": "System default",
"@systemDefault": {},
"to": "To",
"@to": {},
"toastAddPlaylist": "Added to playlist",
"@toastAddPlaylist": {},
"toastDescovery": "Discovery feature reopened, pleast restart the app",
"@toastDescovery": {},
"toastFileError": "File error, Subscribe failed",
"@toastFileError": {},
"toastFileNotVilid": "File not vilid",
"@toastFileNotVilid": {},
"toastReadFile": "Read file successfully",
"@toastReadFile": {},
"toastRemovePlaylist": "Removed from playlist",
"@toastRemovePlaylist": {},
"unlike": "Unlike",
"@unlike": {},
"unliked": "Unliked",
"@unliked": {}
}

241
lib/l10n/intl_zh_Hans.arb Normal file
View File

@ -0,0 +1,241 @@
{
"@@locale": "zh-Hans",
"all": "全部",
"@all": {},
"cancel": "取消",
"@cancel": {},
"chooseA": "选择",
"@chooseA": {},
"color": "颜色",
"@color": {},
"confirm": "确认",
"@confirm": {},
"darkMode": "夜晚模式",
"@darkMode": {},
"delete": "删除",
"@delete": {},
"download": "下载",
"@download": {},
"editName": "修改组名",
"@editName": {},
"endOfEpisode": "节目结束",
"@endOfEpisode": {},
"feedbackEmail": "发送邮件",
"@feedbackEmail": {},
"feedbackGithub": "提交Issue",
"@feedbackGithub": {},
"feedbackPlay": "Play评价",
"@feedbackPlay": {},
"feedbackTelegram": "加入小组",
"@feedbackTelegram": {},
"from": "自",
"@from": {},
"groups": "分组",
"@groups": {},
"homeGroupsSeeAll": "查看全部",
"@homeGroupsSeeAll": {},
"homeMenuPlaylist": "播放列表",
"@homeMenuPlaylist": {},
"homeSubMenuDownloaded": "已下载",
"@homeSubMenuDownloaded": {},
"homeSubMenuLikeData": "添加日期",
"@homeSubMenuLikeData": {},
"homeSubMenuSortBy": "排序",
"@homeSubMenuSortBy": {},
"homeSubMenuUpdateDate": "更新日期",
"@homeSubMenuUpdateDate": {},
"homeTabMenuFavotite": "收藏",
"@homeTabMenuFavotite": {},
"homeTabMenuRecent": "最近更新",
"@homeTabMenuRecent": {},
"homeToprightMenuAbout": "关于",
"@homeToprightMenuAbout": {},
"homeToprightMenuImportOMPL": "导入OMPL",
"@homeToprightMenuImportOMPL": {},
"homeToprightMenuRefreshAll": "全部刷新",
"@homeToprightMenuRefreshAll": {},
"homeToprightMenuSettings": "设置",
"@homeToprightMenuSettings": {},
"later": "稍后",
"@later": {},
"lightMode": "明亮模式",
"@lightMode": {},
"like": "喜欢",
"@like": {},
"liked": "已收藏",
"@liked": {},
"listen": "收听",
"@listen": {},
"listened": "已收听",
"@listened": {},
"markListened": "标记已收听",
"@markListened": {},
"menu": "菜单",
"@menu": {},
"menuAllPodcasts": "所有订阅",
"@menuAllPodcasts": {},
"menuMarkAllListened": "标记所有已收听",
"@menuMarkAllListened": {},
"menuMarkListened": "标记已收听",
"@menuMarkListened": {},
"menuViewRSS": "查看 RSS",
"@menuViewRSS": {},
"menuVisitSite": "访问网站",
"@menuVisitSite": {},
"network": "网络",
"@network": {},
"newGroup": "创建分组",
"@newGroup": {},
"play": "播放",
"@play": {},
"popupMenuDownloadDes": "下载节目",
"@popupMenuDownloadDes": {},
"popupMenuLaterDes": "添加到播放列表",
"@popupMenuLaterDes": {},
"popupMenuLikeDes": "添加到收藏",
"@popupMenuLikeDes": {},
"popupMenuMarkDes": "设置为已收听",
"@popupMenuMarkDes": {},
"popupMenuPlayDes": "播放节目",
"@popupMenuPlayDes": {},
"remove": "移除",
"@remove": {},
"schedule": "定时",
"@schedule": {},
"searchPodcast": "搜索播客",
"@searchPodcast": {},
"settingsAccentColor": "次要颜色",
"@settingsAccentColor": {},
"settingsAccentColorDes": "包括溢出颜色",
"@settingsAccentColorDes": {},
"settingsAppearance": "界面",
"@settingsAppearance": {},
"settingsAppearanceDes": "颜色与主题",
"@settingsAppearanceDes": {},
"settingsAppIntro": "引导页",
"@settingsAppIntro": {},
"settingsAudioCache": "播放缓存",
"@settingsAudioCache": {},
"settingsAudioCacheDes": "播放缓存设置",
"@settingsAudioCacheDes": {},
"settingsAutoDelete": "自动删除下载节目",
"@settingsAutoDelete": {},
"settingsAutoDeleteDes": "默认 30 天",
"@settingsAutoDeleteDes": {},
"settingsAutoPlayDes": "自动播放下一节目",
"@settingsAutoPlayDes": {},
"settingsDefaultGrid": "默认布局",
"@settingsDefaultGrid": {},
"settingsDefaultGridDownload": "下载页",
"@settingsDefaultGridDownload": {},
"settingsDefaultGridFavorite": "收藏页",
"@settingsDefaultGridFavorite": {},
"settingsDefaultGridPodcast": "播客页",
"@settingsDefaultGridPodcast": {},
"settingsDefaultGridRecent": "最近页",
"@settingsDefaultGridRecent": {},
"settingsDiscovery": "再次功能介绍",
"@settingsDiscovery": {},
"settingsEnableSyncing": "开启自动更新",
"@settingsEnableSyncing": {},
"settingsEnableSyncingDes": "在后台更新所有订阅播客",
"@settingsEnableSyncingDes": {},
"settingsExport": "导出",
"@settingsExport": {},
"settingsExportDes": "导出 OMPL 文件",
"@settingsExportDes": {},
"settingsFeedback": "反馈",
"@settingsFeedback": {},
"settingsFeedbackDes": "意见与建议",
"@settingsFeedbackDes": {},
"settingsHistory": "历史记录",
"@settingsHistory": {},
"settingsHistoryDes": "播放日期",
"@settingsHistoryDes": {},
"settingsInfo": "信息",
"@settingsInfo": {},
"settingsInterface": "界面",
"@settingsInterface": {},
"settingsLayout": "布局",
"@settingsLayout": {},
"settingsLayoutDes": "应用布局",
"@settingsLayoutDes": {},
"settingsLibraries": "开源",
"@settingsLibraries": {},
"settingsLibrariesDes": "使用开源项目",
"@settingsLibrariesDes": {},
"settingsManageDownload": "下载管理",
"@settingsManageDownload": {},
"settingsManageDownloadDes": "管理下载节目文件",
"@settingsManageDownloadDes": {},
"settingsMenuAutoPlay": "自动播放下一节目",
"@settingsMenuAutoPlay": {},
"settingsNetworkCellular": "蜂窝数据确认",
"@settingsNetworkCellular": {},
"settingsNetworkCellularAuto": "是否用蜂窝数据自动下载",
"@settingsNetworkCellularAuto": {},
"settingsNetworkCellularAutoDes": "你可以在分组管理页面设置自动下载",
"@settingsNetworkCellularAutoDes": {},
"settingsNetworkCellularDes": "在使用蜂窝数据下载前确认",
"@settingsNetworkCellularDes": {},
"settingsPlayDes": "播放列表和播放器",
"@settingsPlayDes": {},
"settingsPopupMenu": "节目弹出菜单",
"@settingsPopupMenu": {},
"settingsPopupMenuDes": "修改节目弹出菜单",
"@settingsPopupMenuDes": {},
"settingsPrefrence": "首选项",
"@settingsPrefrence": {},
"settingsRealDark": "真的黑",
"@settingsRealDark": {},
"settingsRealDarkDes": "如果夜不够黑,请开启",
"@settingsRealDarkDes": {},
"settingsSTAuto": "自动睡眠模式",
"@settingsSTAuto": {},
"settingsSTAutoDes": "定期开启睡眠模式",
"@settingsSTAutoDes": {},
"settingsSTDefaultTime": "默认时长",
"@settingsSTDefaultTime": {},
"settingsSTDefautTimeDes": "睡眠模式默认时长",
"@settingsSTDefautTimeDes": {},
"settingsSTMode": "自动睡眠模式默认时长",
"@settingsSTMode": {},
"settingsStorageDes": "管理缓存和下载空间",
"@settingsStorageDes": {},
"settingsSyncing": "同步",
"@settingsSyncing": {},
"settingsSyncingDes": "在后台更新播客",
"@settingsSyncingDes": {},
"settingsTheme": "主题",
"@settingsTheme": {},
"settingStorage": "储存空间",
"@settingStorage": {},
"settingsUpdateInterval": "更新频率",
"@settingsUpdateInterval": {},
"settingsUpdateIntervalDes": "默认 24 小时",
"@settingsUpdateIntervalDes": {},
"sleepTimer": "睡眠模式",
"@sleepTimer": {},
"subscribe": "订阅",
"@subscribe": {},
"systemDefault": "系统默认",
"@systemDefault": {},
"to": "到",
"@to": {},
"toastAddPlaylist": "添加到播放列表",
"@toastAddPlaylist": {},
"toastDescovery": "重启应用后可查看",
"@toastDescovery": {},
"toastFileError": "文件错误,导入失败",
"@toastFileError": {},
"toastFileNotVilid": "文件错误",
"@toastFileNotVilid": {},
"toastReadFile": "读取文件成功",
"@toastReadFile": {},
"toastRemovePlaylist": "从播放列表移除",
"@toastRemovePlaylist": {},
"unlike": "取消喜欢",
"@unlike": {},
"unliked": "从收藏移除",
"@unliked": {}
}

View File

@ -276,6 +276,7 @@ class _PodcastDetailState extends State<PodcastDetail> {
@override
Widget build(BuildContext context) {
Color _color = widget.podcastLocal.primaryColor.colorizedark();
final s = context.s;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarIconBrightness: Brightness.dark,
@ -366,7 +367,7 @@ class _PodcastDetailState extends State<PodcastDetail> {
horizontal:
5.0),
),
Text('Visit Site'),
Text(s.menuVisitSite),
],
),
),
@ -390,7 +391,7 @@ class _PodcastDetailState extends State<PodcastDetail> {
EdgeInsets.symmetric(
horizontal: 5.0),
),
Text('View Rss Feed'),
Text(s.menuViewRSS),
],
),
),
@ -422,7 +423,7 @@ class _PodcastDetailState extends State<PodcastDetail> {
horizontal: 5.0),
),
Text(
'Mark All Listened',
s.menuMarkAllListened,
),
],
),
@ -555,7 +556,7 @@ class _PodcastDetailState extends State<PodcastDetail> {
Radius.circular(
10))),
elevation: 1,
tooltip: 'Sort By',
tooltip: s.homeSubMenuSortBy,
child: Container(
height: 30,
padding:
@ -565,7 +566,8 @@ class _PodcastDetailState extends State<PodcastDetail> {
mainAxisSize:
MainAxisSize.min,
children: <Widget>[
Text('Sort by'),
Text(s
.homeSubMenuSortBy),
Padding(
padding: EdgeInsets
.symmetric(

View File

@ -97,6 +97,7 @@ class _DownloadsManageState extends State<DownloadsManage> {
@override
Widget build(BuildContext context) {
final s = context.s;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarIconBrightness: Theme.of(context).accentColorBrightness,
@ -190,7 +191,7 @@ class _DownloadsManageState extends State<DownloadsManage> {
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text('Sory by'),
Text(s.homeSubMenuSortBy),
Padding(
padding: EdgeInsets.symmetric(
horizontal: 5),

View File

@ -111,6 +111,7 @@ class _PlayedHistoryState extends State<PlayedHistory>
double top = 0;
@override
Widget build(BuildContext context) {
final s = context.s;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarIconBrightness: Theme.of(context).accentColorBrightness,
@ -137,7 +138,7 @@ class _PlayedHistoryState extends State<PlayedHistory>
return FlexibleSpaceBar(
title: top < 70 + MediaQuery.of(context).padding.top
? Text(
'History',
s.settingsHistory,
)
: Center(),
background: Padding(
@ -162,11 +163,11 @@ class _PlayedHistoryState extends State<PlayedHistory>
indicatorColor: context.accentColor,
tabs: <Widget>[
Tab(
child: Text('Listen',
child: Text(s.listen,
style: context.textTheme.headline6),
),
Tab(
child: Text('Subscribe',
child: Text(s.subscribe,
style: context.textTheme.headline6),
)
],

View File

@ -111,6 +111,7 @@ class _LayoutSettingState extends State<LayoutSetting> {
@override
Widget build(BuildContext context) {
final s = context.s;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarIconBrightness: Theme.of(context).accentColorBrightness,
@ -120,7 +121,7 @@ class _LayoutSettingState extends State<LayoutSetting> {
),
child: Scaffold(
appBar: AppBar(
title: Text('Layout'),
title: Text(s.settingsLayout),
elevation: 0,
backgroundColor: context.primaryColor,
),
@ -135,7 +136,7 @@ class _LayoutSettingState extends State<LayoutSetting> {
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Episode popup menu',
child: Text(s.settingsPopupMenu,
style: Theme.of(context)
.textTheme
.bodyText1
@ -152,8 +153,8 @@ class _LayoutSettingState extends State<LayoutSetting> {
MaterialPageRoute(
builder: (context) => PopupMenuSetting())),
contentPadding: EdgeInsets.only(left: 80.0, right: 20),
title: Text('Episode popup menu'),
subtitle: Text('Change the menu when long tap episode'),
title: Text(s.settingsPopupMenu),
subtitle: Text(s.settingsPopupMenuDes),
),
Divider(height: 2),
Padding(
@ -163,7 +164,7 @@ class _LayoutSettingState extends State<LayoutSetting> {
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Default grid view',
child: Text(s.settingsDefaultGrid,
style: Theme.of(context)
.textTheme
.bodyText1
@ -176,13 +177,17 @@ class _LayoutSettingState extends State<LayoutSetting> {
scrollDirection: Axis.vertical,
children: <Widget>[
_setDefaultGridView(context,
text: 'Podcast page', key: podcastLayoutKey),
text: s.settingsDefaultGridPodcast,
key: podcastLayoutKey),
_setDefaultGridView(context,
text: 'Recent tab', key: recentLayoutKey),
text: s.settingsDefaultGridRecent,
key: recentLayoutKey),
_setDefaultGridView(context,
text: 'Favorite tab', key: favLayoutKey),
text: s.settingsDefaultGridFavorite,
key: favLayoutKey),
_setDefaultGridView(context,
text: 'Downlaod tab', key: downloadLayoutKey),
text: s.settingsDefaultGridDownload,
key: downloadLayoutKey),
]),
Divider(height: 2)
]),

View File

@ -207,6 +207,7 @@ class PlaySetting extends StatelessWidget {
@override
Widget build(BuildContext context) {
var settings = Provider.of<SettingState>(context, listen: false);
final s = context.s;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarIconBrightness: Theme.of(context).accentColorBrightness,
@ -216,7 +217,7 @@ class PlaySetting extends StatelessWidget {
),
child: Scaffold(
appBar: AppBar(
title: Text('Player Setting'),
title: Text(s.play),
elevation: 0,
backgroundColor: Theme.of(context).primaryColor,
),
@ -237,7 +238,7 @@ class PlaySetting extends StatelessWidget {
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Playlist',
child: Text(s.homeMenuPlaylist,
style: Theme.of(context)
.textTheme
.bodyText1
@ -254,8 +255,8 @@ class PlaySetting extends StatelessWidget {
onTap: () => settings.setAutoPlay = !data,
contentPadding:
EdgeInsets.only(left: 80.0, right: 20),
title: Text('Autoplay'),
subtitle: Text('Autoplay next episode in playlist'),
title: Text('Auto play next'),
subtitle: Text(s.settingsAutoPlayDes),
trailing: Transform.scale(
scale: 0.9,
child: Switch(
@ -274,10 +275,8 @@ class PlaySetting extends StatelessWidget {
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Sleep timer',
style: Theme.of(context)
.textTheme
.bodyText1
child: Text(s.sleepTimer,
style: context.textTheme.bodyText1
.copyWith(color: Theme.of(context).accentColor)),
),
ListView(
@ -287,8 +286,8 @@ class PlaySetting extends StatelessWidget {
children: <Widget>[
ListTile(
contentPadding: EdgeInsets.only(left: 80.0, right: 20),
title: Text('Default time'),
subtitle: Text('Default time for sleep timer'),
title: Text(s.settingsSTDefaultTime),
subtitle: Text(s.settingsSTDefautTimeDes),
trailing: Selector<SettingState, int>(
selector: (_, settings) => settings.defaultSleepTimer,
builder: (_, data, __) => DropdownButton(
@ -313,9 +312,8 @@ class PlaySetting extends StatelessWidget {
onTap: () => settings.setAutoSleepTimer = !data,
contentPadding: const EdgeInsets.only(
left: 80.0, right: 20.0, bottom: 10.0, top: 10.0),
title: Text('Auto turn on sleep timer'),
subtitle:
Text('Auto start sleep timer at scheduled time'),
title: Text(s.settingsSTAuto),
subtitle: Text(s.settingsSTAutoDes),
trailing: Transform.scale(
scale: 0.9,
child: Switch(
@ -328,7 +326,7 @@ class PlaySetting extends StatelessWidget {
ListTile(
contentPadding: const EdgeInsets.only(
left: 80.0, right: 20.0, bottom: 10.0, top: 10.0),
title: Text('Auto sleep timer mode'),
title: Text(s.settingsSTMode),
subtitle:
context.width > 360 ? null : _modeWidget(context),
trailing: context.width > 360
@ -337,7 +335,7 @@ class PlaySetting extends StatelessWidget {
ListTile(
contentPadding:
EdgeInsets.only(left: 80.0, right: 20),
title: Text('Schedule'),
title: Text(s.schedule),
subtitle: context.width > 360
? null
: _scheduleWidget(context),

View File

@ -102,6 +102,7 @@ class _SettingsState extends State<Settings>
@override
Widget build(BuildContext context) {
final s = context.s;
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
statusBarIconBrightness: Theme.of(context).accentColorBrightness,
@ -111,7 +112,7 @@ class _SettingsState extends State<Settings>
),
child: Scaffold(
appBar: AppBar(
title: Text('Settings'),
title: Text(s.homeToprightMenuSettings),
elevation: 0,
backgroundColor: context.primaryColor,
),
@ -134,7 +135,7 @@ class _SettingsState extends State<Settings>
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Prefrence',
child: Text(s.settingsPrefrence,
style: Theme.of(context)
.textTheme
.bodyText1
@ -153,8 +154,8 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.adjust_solid),
title: Text('Appearance'),
subtitle: Text('Colors and themes'),
title: Text(s.settingsAppearance),
subtitle: Text(s.settingsAppearanceDes),
),
Divider(height: 2),
ListTile(
@ -165,8 +166,8 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.stop_circle_solid),
title: Text('Layout'),
subtitle: Text('App layout'),
title: Text(s.settingsLayout),
subtitle: Text(s.settingsLayoutDes),
),
Divider(height: 2),
ListTile(
@ -177,21 +178,20 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.play_circle),
title: Text('Play'),
subtitle: Text('Playlist and player'),
title: Text(s.play),
subtitle: Text(s.settingsPlayDes),
),
Divider(height: 2),
ListTile(
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SyncingSetting())),
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.cloud_download_alt_solid),
title: Text('Syncing'),
subtitle: Text('Refresh podcasts in the background'),
),
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SyncingSetting())),
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.cloud_download_alt_solid),
title: Text(s.settingsSyncing),
subtitle: Text(s.settingsSyncingDes)),
Divider(height: 2),
ListTile(
onTap: () => Navigator.push(
@ -201,8 +201,8 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.save),
title: Text('Storage'),
subtitle: Text('Manage cache and download storage'),
title: Text(s.settingStorage),
subtitle: Text(s.settingsStorageDes),
),
Divider(height: 2),
ListTile(
@ -213,8 +213,8 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(Icons.update),
title: Text('History'),
subtitle: Text('Listen data'),
title: Text(s.settingsHistory),
subtitle: Text(s.settingsHistoryDes),
),
Divider(height: 2),
ListTile(
@ -224,8 +224,8 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.file_code_solid),
title: Text('Export'),
subtitle: Text('Export ompl file of all podcasts'),
title: Text(s.settingsExport),
subtitle: Text(s.settingsExportDes),
),
Divider(height: 2),
],
@ -243,7 +243,7 @@ class _SettingsState extends State<Settings>
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Info',
child: Text(s.settingsInfo,
style: Theme.of(context)
.textTheme
.bodyText1
@ -262,9 +262,8 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.book_open_solid),
title: Text('Libraries'),
subtitle:
Text('Open source libraries in application'),
title: Text(s.settingsLibraries),
subtitle: Text(s.settingsLibrariesDes),
),
Divider(height: 2),
ListTile(
@ -280,8 +279,8 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.bug_solid),
title: Text('Feedback'),
subtitle: Text('Bugs and feature request'),
title: Text(s.settingsFeedback),
subtitle: Text(s.settingsFeedbackDes),
trailing: Transform.rotate(
angle: math.pi * _value,
child: Icon(Icons.keyboard_arrow_down),
@ -298,19 +297,19 @@ class _SettingsState extends State<Settings>
SizedBox(width: 75),
_feedbackItem(
LineIcons.github,
'Submit issue',
s.feedbackGithub,
'https://github.com/stonega/tsacdop/issues'),
_feedbackItem(
LineIcons.telegram,
'Join group',
s.feedbackTelegram,
'https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg'),
_feedbackItem(
LineIcons.envelope_open_text_solid,
'Write to me',
s.feedbackEmail,
'mailto:<tsacdop.app@gmail.com>?subject=Tsacdop Feedback'),
_feedbackItem(
LineIcons.google_play,
'Rate on Play',
s.feedbackPlay,
'https://play.google.com/store/apps/details?id=com.stonegate.tsacdop')
],
),
@ -341,7 +340,7 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.capsules_solid),
title: Text('Discovery Features Again'),
title: Text(s.settingsDiscovery),
),
Divider(height: 2),
ListTile(
@ -353,7 +352,7 @@ class _SettingsState extends State<Settings>
contentPadding:
EdgeInsets.symmetric(horizontal: 25.0),
leading: Icon(LineIcons.columns_solid),
title: Text('App Intro'),
title: Text(s.settingsAppIntro),
),
Divider(height: 2),
],

View File

@ -77,6 +77,7 @@ class _StorageSettingState extends State<StorageSetting>
@override
Widget build(BuildContext context) {
final s = context.s;
var settings = Provider.of<SettingState>(context, listen: false);
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
@ -87,7 +88,7 @@ class _StorageSettingState extends State<StorageSetting>
),
child: Scaffold(
appBar: AppBar(
title: Text('Storage'),
title: Text(s.settingStorage),
elevation: 0,
backgroundColor: Theme.of(context).primaryColor,
),
@ -107,7 +108,7 @@ class _StorageSettingState extends State<StorageSetting>
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Network',
child: Text(s.network,
style: Theme.of(context)
.textTheme
.bodyText1
@ -125,9 +126,8 @@ class _StorageSettingState extends State<StorageSetting>
onTap: () => settings.downloadUsingData = !data,
contentPadding: EdgeInsets.only(
left: 80.0, right: 25, bottom: 10, top: 10),
title: Text('Ask before using cellular data'),
subtitle: Text(
'Ask to confirm when using cellular data to download episodes'),
title: Text(s.settingsNetworkCellular),
subtitle: Text(s.settingsNetworkCellularDes),
trailing: Transform.scale(
scale: 0.9,
child: Switch(
@ -151,10 +151,9 @@ class _StorageSettingState extends State<StorageSetting>
},
contentPadding: EdgeInsets.only(
left: 80.0, right: 25, bottom: 10, top: 10),
title:
Text('Auto download using cellular data'),
subtitle: Text(
'You can set podcast auto download in group manage page'),
title: Text(s.settingsNetworkCellularAuto),
subtitle:
Text(s.settingsNetworkCellularAutoDes),
trailing: Transform.scale(
scale: 0.9,
child: Switch(
@ -182,7 +181,7 @@ class _StorageSettingState extends State<StorageSetting>
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Storage',
child: Text(s.settingStorage,
style: Theme.of(context)
.textTheme
.bodyText1
@ -199,8 +198,8 @@ class _StorageSettingState extends State<StorageSetting>
MaterialPageRoute(
builder: (context) => DownloadsManage())),
contentPadding: EdgeInsets.symmetric(horizontal: 80.0),
title: Text('Downloads'),
subtitle: Text('Manage downloaded audio files'),
title: Text(s.download),
subtitle: Text(s.settingsManageDownloadDes),
),
Divider(height: 2),
FutureBuilder<int>(
@ -210,8 +209,8 @@ class _StorageSettingState extends State<StorageSetting>
return ListTile(
contentPadding:
EdgeInsets.only(left: 80.0, right: 20),
title: Text('Auto delete downloads after'),
subtitle: Text('Default 30 days'),
title: Text(s.settingsAutoDelete),
subtitle: Text(s.settingsAutoDeleteDes),
trailing: DropdownButton(
hint: snapshot.data == -1
? Text('Never')
@ -238,8 +237,8 @@ class _StorageSettingState extends State<StorageSetting>
ListTile(
contentPadding: EdgeInsets.only(left: 80.0, right: 25),
// leading: Icon(Icons.colorize),
title: Text('Audio cache'),
subtitle: Text('Audio cache max size'),
title: Text(s.settingsAudioCache),
subtitle: Text(s.settingsAudioCacheDes),
trailing: Text.rich(TextSpan(
text: '${(_value ~/ 100) * 100}',
style: GoogleFonts.teko(

View File

@ -4,10 +4,12 @@ import 'package:provider/provider.dart';
import 'package:tuple/tuple.dart';
import '../state/settingstate.dart';
import '../util/context_extension.dart';
class SyncingSetting extends StatelessWidget {
@override
Widget build(BuildContext context) {
final s = context.s;
var settings = Provider.of<SettingState>(context, listen: false);
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
@ -18,7 +20,7 @@ class SyncingSetting extends StatelessWidget {
),
child: Scaffold(
appBar: AppBar(
title: Text('Syncing'),
title: Text(s.settingsSyncing),
elevation: 0,
backgroundColor: Theme.of(context).primaryColor,
),
@ -40,16 +42,16 @@ class SyncingSetting extends StatelessWidget {
),
Container(
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
padding: const EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Syncing',
child: Text(s.settingsSyncing,
style: Theme.of(context)
.textTheme
.bodyText1
.copyWith(color: Theme.of(context).accentColor)),
),
Padding(
padding: EdgeInsets.all(5.0),
padding: const EdgeInsets.all(5.0),
),
ListView(
physics: const BouncingScrollPhysics(),
@ -66,11 +68,10 @@ class SyncingSetting extends StatelessWidget {
settings.setWorkManager(data.item2);
}
},
contentPadding: EdgeInsets.only(
contentPadding: const EdgeInsets.only(
left: 80.0, right: 20, bottom: 10),
title: Text('Enable syncing'),
subtitle: Text(
'Refresh all podcasts in the background to get leatest episodes'),
title: Text(s.settingsEnableSyncing),
subtitle: Text(s.settingsEnableSyncingDes),
trailing: Transform.scale(
scale: 0.9,
child: Switch(
@ -87,13 +88,13 @@ class SyncingSetting extends StatelessWidget {
Divider(height: 2),
ListTile(
contentPadding:
EdgeInsets.only(left: 80.0, right: 20),
title: Text('Update Interval'),
subtitle: Text('Default 24 hours'),
const EdgeInsets.only(left: 80.0, right: 20),
title: Text(s.settingsUpdateInterval),
subtitle: Text(s.settingsUpdateIntervalDes),
trailing: DropdownButton(
hint: data.item2 == 1
? Text(data.item2.toString() + ' hour')
: Text(data.item2.toString() + 'hours'),
: Text(data.item2.toString() + ' hours'),
underline: Center(),
elevation: 1,
value: data.item2,

View File

@ -9,6 +9,7 @@ import '../util/general_dialog.dart';
class ThemeSetting extends StatelessWidget {
@override
Widget build(BuildContext context) {
final s = context.s;
var settings = Provider.of<SettingState>(context, listen: false);
return AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle(
@ -19,7 +20,7 @@ class ThemeSetting extends StatelessWidget {
),
child: Scaffold(
appBar: AppBar(
title: Text('Appearance'),
title: Text(s.settingsAppearance),
elevation: 0,
backgroundColor: Theme.of(context).primaryColor,
),
@ -34,7 +35,7 @@ class ThemeSetting extends StatelessWidget {
height: 30.0,
padding: EdgeInsets.symmetric(horizontal: 70),
alignment: Alignment.centerLeft,
child: Text('Interface',
child: Text(s.settingsInterface,
style: Theme.of(context)
.textTheme
.bodyText1
@ -74,7 +75,7 @@ class ThemeSetting extends StatelessWidget {
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.all(Radius.circular(10.0))),
title: Text('Theme'),
title: Text(s.settingsTheme),
content: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
@ -82,7 +83,7 @@ class ThemeSetting extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
RadioListTile(
title: Text('System default'),
title: Text(s.systemDefault),
value: ThemeMode.system,
groupValue: settings.theme,
onChanged: (value) {
@ -112,8 +113,8 @@ class ThemeSetting extends StatelessWidget {
)),
contentPadding: EdgeInsets.symmetric(horizontal: 80.0),
// leading: Icon(Icons.colorize),
title: Text('Theme'),
subtitle: Text('System default'),
title: Text(s.settingsTheme),
subtitle: Text(s.systemDefault),
),
Selector<SettingState, bool>(
selector: (_, setting) => setting.realDark,
@ -123,10 +124,9 @@ class ThemeSetting extends StatelessWidget {
left: 80.0, right: 20, bottom: 10, top: 10),
// leading: Icon(Icons.colorize),
title: Text(
'Real Dark',
s.settingsRealDark,
),
subtitle: Text(
'Turn on if you think the night is not dark enough'),
subtitle: Text(s.settingsRealDarkDes),
trailing: Transform.scale(
scale: 0.9,
child: Switch(
@ -153,8 +153,8 @@ class ThemeSetting extends StatelessWidget {
),
),
contentPadding: EdgeInsets.only(left: 80.0, right: 25),
title: Text('Accent color'),
subtitle: Text('Include the overlay color'),
title: Text(s.settingsAccentColor),
subtitle: Text(s.settingsAccentColorDes),
trailing: Container(
height: 25,
width: 25,

View File

@ -1,13 +1,15 @@
import 'package:flutter/material.dart';
import '../generated/l10n.dart';
extension ContextExtension on BuildContext{
Color get primaryColor => Theme.of(this).primaryColor;
Color get accentColor => Theme.of(this).accentColor;
Color get scaffoldBackgroundColor => Theme.of(this).scaffoldBackgroundColor;
Color get primaryColorDark => Theme.of(this).primaryColorDark;
Color get textColor => Theme.of(this).textTheme.bodyText1.color;
Brightness get brightness => Theme.of(this).brightness;
double get width => MediaQuery.of(this).size.width;
double get height => MediaQuery.of(this).size.width;
TextTheme get textTheme => Theme.of(this).textTheme;
}
extension ContextExtension on BuildContext {
Color get primaryColor => Theme.of(this).primaryColor;
Color get accentColor => Theme.of(this).accentColor;
Color get scaffoldBackgroundColor => Theme.of(this).scaffoldBackgroundColor;
Color get primaryColorDark => Theme.of(this).primaryColorDark;
Color get textColor => Theme.of(this).textTheme.bodyText1.color;
Brightness get brightness => Theme.of(this).brightness;
double get width => MediaQuery.of(this).size.width;
double get height => MediaQuery.of(this).size.width;
TextTheme get textTheme => Theme.of(this).textTheme;
S get s => S.of(this);
}

View File

@ -54,10 +54,10 @@ class MyRoundSliderThumpShape extends SliderComponentShape {
begin: _disabledThumbRadius,
end: enabledThumbRadius,
);
final ColorTween colorTween = ColorTween(
begin: sliderTheme.disabledThumbColor,
end: sliderTheme.thumbColor,
);
// final ColorTween colorTween = ColorTween(
// begin: sliderTheme.disabledThumbColor,
// end: sliderTheme.thumbColor,
// );
canvas.drawCircle(
center,

View File

@ -10,7 +10,6 @@ import 'package:tuple/tuple.dart';
import 'package:line_icons/line_icons.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:auto_animated/auto_animated.dart';
import 'package:tuple/tuple.dart';
import 'open_container.dart';
import '../state/audiostate.dart';
@ -398,7 +397,7 @@ class EpisodeGrid extends StatelessWidget {
showItemDuration: Duration(milliseconds: 50),
);
final scrollController = ScrollController();
final s = context.s;
return SliverPadding(
padding: const EdgeInsets.only(
top: 10.0, bottom: 5.0, left: 15.0, right: 15.0),
@ -507,7 +506,7 @@ class EpisodeGrid extends StatelessWidget {
? context.primaryColor
: context.scaffoldBackgroundColor,
title: Text(data.item1 != episodes[index]
? "Play"
? s.play
: "Playing"),
trailingIcon: Icon(
LineIcons.play_circle_solid,
@ -526,7 +525,7 @@ class EpisodeGrid extends StatelessWidget {
title: data.item2.contains(
episodes[index].enclosureUrl)
? Text("Remove")
: Text("Later"),
: Text(s.later),
trailingIcon: Icon(
LineIcons.clock_solid,
color: Colors.cyan,
@ -556,8 +555,8 @@ class EpisodeGrid extends StatelessWidget {
? context.primaryColor
: context.scaffoldBackgroundColor,
title: isLiked
? Text("Unlike")
: Text("Like"),
? Text(s.unlike)
: Text(s.like),
trailingIcon: Icon(LineIcons.heart,
color: Colors.red, size: 21),
onPressed: () async {
@ -592,7 +591,7 @@ class EpisodeGrid extends StatelessWidget {
color: context.textColor
.withOpacity(0.5)))
: Text(
'Mark Listened',
s.markListened,
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
@ -609,7 +608,7 @@ class EpisodeGrid extends StatelessWidget {
await _markListened(episodes[index]);
audio.setEpisodeState = true;
Fluttertoast.showToast(
msg: 'Mark listened',
msg: s.markListened,
gravity: ToastGravity.BOTTOM,
);
}
@ -622,11 +621,11 @@ class EpisodeGrid extends StatelessWidget {
? context.primaryColor
: context.scaffoldBackgroundColor,
title: isDownloaded
? Text('Downloaded',
? Text(s.homeSubMenuDownloaded,
style: TextStyle(
color: context.textColor
.withOpacity(0.5)))
: Text('Download'),
: Text(s.download),
trailingIcon: Icon(
LineIcons.download_solid,
color: Colors.green),

View File

@ -70,3 +70,5 @@ flutter:
uses-material-design: true
flutter_intl:
enabled: true
localizely:
project_id: bde4e9bd-4cb2-449b-9de2-18f231ddb47d