chore(settings): clarify beta features and playback information

This commit is contained in:
zarzet committed 2026-10-18 03:11:44 +07:00
1 parent 4cee16e9e8
commit 9b622f941c
6 files changed
+69 -40

No files matched your search

+9 -1
View File
@@ -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"
},
+3 -1
View File
@@ -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"
},
+20 -6
View File
@@ -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(),
],
),
),
),
],
),
],
),
+7 -7
View File
@@ -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,
),
),
);
}
}
+26
View File
@@ -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,
),
),
);
}
}