mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-10-21 15:02:21 +02:00
chore(settings): clarify beta features and playback information
This commit is contained in:
1 parent
4cee16e9e8
commit
9b622f941c
6 files changed
+69
-40
No files matched your search
@@ -758,6 +758,14 @@
|
||||
"@aboutTelegramChatSubtitle": {
|
||||
"description": "Subtitle for Telegram chat"
|
||||
},
|
||||
"aboutTelegramBeta": "SpotiFLAC Mobile Beta",
|
||||
"@aboutTelegramBeta": {
|
||||
"description": "Link to the Telegram group that shares internal beta builds"
|
||||
},
|
||||
"aboutTelegramBetaSubtitle": "Join for the latest internal beta builds",
|
||||
"@aboutTelegramBetaSubtitle": {
|
||||
"description": "Subtitle for the Telegram beta group link"
|
||||
},
|
||||
"aboutSocial": "Social",
|
||||
"@aboutSocial": {
|
||||
"description": "Section for social links"
|
||||
@@ -6611,7 +6619,7 @@
|
||||
"@libraryExternalPlayer": {
|
||||
"description": "Setting option to use an external music player"
|
||||
},
|
||||
"libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support",
|
||||
"libraryExternalPlayerSubtitle": "Open tracks in another music app on your device",
|
||||
"@libraryExternalPlayerSubtitle": {
|
||||
"description": "Subtitle for external player option"
|
||||
},
|
||||
|
||||
@@ -780,6 +780,8 @@
|
||||
"@aboutTelegramChatSubtitle": {
|
||||
"description": "Subtitle for Telegram chat"
|
||||
},
|
||||
"aboutTelegramBeta": "SpotiFLAC Mobile Beta",
|
||||
"aboutTelegramBetaSubtitle": "Gabung untuk build beta internal terbaru",
|
||||
"aboutSocial": "Media Sosial",
|
||||
"@aboutSocial": {
|
||||
"description": "Section for social links"
|
||||
@@ -6633,7 +6635,7 @@
|
||||
"@libraryExternalPlayer": {
|
||||
"description": "Setting option to use an external music player"
|
||||
},
|
||||
"libraryExternalPlayerSubtitle": "Bagus untuk mendengarkan harian, kualitas terbaik, pemutaran lancar, EQ, dan dukungan format luas",
|
||||
"libraryExternalPlayerSubtitle": "Buka lagu di aplikasi musik lain di perangkatmu",
|
||||
"@libraryExternalPlayerSubtitle": {
|
||||
"description": "Subtitle for external player option"
|
||||
},
|
||||
|
||||
@@ -23,6 +23,7 @@ import 'package:spotiflac_android/widgets/app_slider.dart';
|
||||
import 'package:spotiflac_android/widgets/app_sliver_header.dart';
|
||||
import 'package:spotiflac_android/widgets/app_switch.dart';
|
||||
import 'package:spotiflac_android/widgets/app_text_field.dart';
|
||||
import 'package:spotiflac_android/widgets/beta_badge.dart';
|
||||
import 'package:spotiflac_android/widgets/expressive_button.dart';
|
||||
import 'package:spotiflac_android/widgets/expressive_icon_button.dart';
|
||||
import 'package:spotiflac_android/widgets/mornye_chrome.dart';
|
||||
@@ -237,6 +238,7 @@ class _EqualizerScreenState extends ConsumerState<EqualizerScreen> {
|
||||
SettingsSwitchItem(
|
||||
icon: Icons.graphic_eq,
|
||||
title: l10n.equalizerEnable,
|
||||
titleTrailing: const BetaBadge(),
|
||||
value: settings.enabled,
|
||||
onChanged: setEnabled,
|
||||
showDivider: false,
|
||||
@@ -660,12 +662,24 @@ class _EqualizerOverview extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
SizedBox(height: tokens.gapXs),
|
||||
Text(
|
||||
'${settings.gains.length} ${l10n.equalizerBands.toLowerCase()} · ${l10n.equalizerPreamp} ${_signed(settings.inputGain)} dB',
|
||||
style: theme.textTheme.bodyMedium?.copyWith(
|
||||
color: colors.onSurfaceVariant,
|
||||
fontFeatures: const [FontFeature.tabularFigures()],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
const BetaBadge(),
|
||||
const SizedBox(width: 8),
|
||||
Flexible(
|
||||
child: Text(
|
||||
'${settings.gains.length} ${l10n.equalizerBands.toLowerCase()} · ${l10n.equalizerPreamp} ${_signed(settings.inputGain)} dB',
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: theme.textTheme.bodyMedium?.copyWith(
|
||||
color: colors.onSurfaceVariant,
|
||||
fontFeatures: const [
|
||||
FontFeature.tabularFigures(),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -185,13 +185,6 @@ class AboutPage extends StatelessWidget {
|
||||
onTap: () => _launchUrl(AppInfo.originalGithubUrl),
|
||||
showDivider: true,
|
||||
),
|
||||
_AboutSettingsItem(
|
||||
icon: Icons.campaign_outlined,
|
||||
title: context.l10n.aboutKeepAndroidOpen,
|
||||
subtitle: 'keepandroidopen.org',
|
||||
onTap: () => _launchUrl('https://keepandroidopen.org/'),
|
||||
showDivider: true,
|
||||
),
|
||||
_AboutSettingsItem(
|
||||
icon: Icons.bug_report_outlined,
|
||||
title: context.l10n.aboutReportIssue,
|
||||
@@ -229,6 +222,13 @@ class AboutPage extends StatelessWidget {
|
||||
title: context.l10n.aboutTelegramChat,
|
||||
subtitle: context.l10n.aboutTelegramChatSubtitle,
|
||||
onTap: () => _launchUrl('https://t.me/spotiflac_chat'),
|
||||
showDivider: true,
|
||||
),
|
||||
_AboutSettingsItem(
|
||||
icon: Icons.science_outlined,
|
||||
title: context.l10n.aboutTelegramBeta,
|
||||
subtitle: context.l10n.aboutTelegramBetaSubtitle,
|
||||
onTap: () => _launchUrl('https://t.me/+GUncjI1DB1w0N2Y1'),
|
||||
showDivider: false,
|
||||
),
|
||||
],
|
||||
|
||||
@@ -13,6 +13,7 @@ import 'package:spotiflac_android/widgets/animation_utils.dart';
|
||||
import 'package:spotiflac_android/widgets/app_alert_dialog.dart';
|
||||
import 'package:spotiflac_android/widgets/app_icon.dart';
|
||||
import 'package:spotiflac_android/widgets/app_sliver_header.dart';
|
||||
import 'package:spotiflac_android/widgets/beta_badge.dart';
|
||||
import 'package:spotiflac_android/widgets/player_volume_control.dart';
|
||||
import 'package:spotiflac_android/widgets/settings_group.dart';
|
||||
import 'package:spotiflac_android/widgets/discord_presence_settings.dart';
|
||||
@@ -126,6 +127,7 @@ class _PlaybackSettingsPageState extends ConsumerState<PlaybackSettingsPage> {
|
||||
SettingsItem(
|
||||
icon: Icons.equalizer,
|
||||
title: context.l10n.equalizerTitle,
|
||||
titleTrailing: const BetaBadge(),
|
||||
subtitle: context.l10n.equalizerDescription,
|
||||
onTap: () => Navigator.of(context).push<void>(
|
||||
MaterialPageRoute(builder: (_) => const EqualizerScreen()),
|
||||
@@ -321,7 +323,7 @@ class _PlaybackSettingsPageState extends ConsumerState<PlaybackSettingsPage> {
|
||||
builder: (context, status, _) => SettingsSwitchItem(
|
||||
icon: Icons.usb,
|
||||
title: context.l10n.usbBitPerfect,
|
||||
titleTrailing: const _PlaybackBetaBadge(),
|
||||
titleTrailing: const BetaBadge(),
|
||||
subtitle: [
|
||||
context.l10n.usbBitPerfectDescription,
|
||||
if (settings.usbBitPerfect)
|
||||
@@ -447,7 +449,7 @@ class _PlaybackSettingsPageState extends ConsumerState<PlaybackSettingsPage> {
|
||||
SettingsSwitchItem(
|
||||
icon: Icons.headphones,
|
||||
title: context.l10n.dapExclusive,
|
||||
titleTrailing: const _PlaybackBetaBadge(),
|
||||
titleTrailing: const BetaBadge(),
|
||||
subtitle: context.l10n.dapExclusiveDescription,
|
||||
value: settings.dapExclusive,
|
||||
onChanged: (value) => ref
|
||||
@@ -486,26 +488,3 @@ class _PlaybackSettingsPageState extends ConsumerState<PlaybackSettingsPage> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _PlaybackBetaBadge extends StatelessWidget {
|
||||
const _PlaybackBetaBadge();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colors = Theme.of(context).colorScheme;
|
||||
return Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 2),
|
||||
decoration: BoxDecoration(
|
||||
color: colors.surfaceContainerHighest,
|
||||
borderRadius: BorderRadius.circular(6),
|
||||
),
|
||||
child: Text(
|
||||
'Beta',
|
||||
style: Theme.of(context).textTheme.labelSmall?.copyWith(
|
||||
color: colors.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// A small tonal tag marking a feature that is still in beta.
|
||||
class BetaBadge extends StatelessWidget {
|
||||
const BetaBadge({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colors = Theme.of(context).colorScheme;
|
||||
return Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 2),
|
||||
decoration: BoxDecoration(
|
||||
color: colors.surfaceContainerHighest,
|
||||
borderRadius: BorderRadius.circular(6),
|
||||
),
|
||||
child: Text(
|
||||
'Beta',
|
||||
style: Theme.of(context).textTheme.labelSmall?.copyWith(
|
||||
// onSurfaceVariant falls under 4.5:1 on Mornye's container tones.
|
||||
color: colors.onSurface,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user