mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-10-03 22:56:53 +02:00
refactor: hoist lossless labels before async convert paths
Capture lossless conversion labels before await boundaries in queue, downloaded album, and track metadata flows to avoid BuildContext usage across async gaps.
This commit is contained in:
1 parent
c2b38a7c5a
commit
c0c1d745f3
4 files changed
+30
-35
No files matched your search
@@ -1199,6 +1199,7 @@ class _DownloadedAlbumScreenState extends ConsumerState<DownloadedAlbumScreen> {
|
||||
}
|
||||
|
||||
final isLossless = isLosslessConversionTarget(targetFormat);
|
||||
final losslessLabels = context.l10n.losslessConversionLabels;
|
||||
final confirmed = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (ctx) => AlertDialog(
|
||||
@@ -1210,10 +1211,8 @@ class _DownloadedAlbumScreenState extends ConsumerState<DownloadedAlbumScreen> {
|
||||
targetFormat,
|
||||
losslessQualityLabel(
|
||||
losslessQuality,
|
||||
originalLabel:
|
||||
context.l10n.losslessConversionLabels.original,
|
||||
originalQualityLabel:
|
||||
context.l10n.losslessConversionLabels.originalQuality,
|
||||
originalLabel: losslessLabels.original,
|
||||
originalQualityLabel: losslessLabels.originalQuality,
|
||||
),
|
||||
)
|
||||
: isLossless
|
||||
@@ -1367,7 +1366,7 @@ class _DownloadedAlbumScreenState extends ConsumerState<DownloadedAlbumScreen> {
|
||||
final newQuality = convertedAudioQualityLabel(
|
||||
targetFormat: targetFormat,
|
||||
bitrate: bitrate,
|
||||
labels: context.l10n.losslessConversionLabels,
|
||||
labels: losslessLabels,
|
||||
losslessQuality: losslessQuality,
|
||||
actualBitDepth: convertedBitDepth,
|
||||
actualSampleRate: convertedSampleRate,
|
||||
|
||||
@@ -5642,6 +5642,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
|
||||
}
|
||||
|
||||
final isLossless = isLosslessConversionTarget(targetFormat);
|
||||
final losslessLabels = context.l10n.losslessConversionLabels;
|
||||
final confirmed = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (ctx) => AlertDialog(
|
||||
@@ -5653,10 +5654,8 @@ class _QueueTabState extends ConsumerState<QueueTab> {
|
||||
targetFormat,
|
||||
losslessQualityLabel(
|
||||
losslessQuality,
|
||||
originalLabel:
|
||||
context.l10n.losslessConversionLabels.original,
|
||||
originalQualityLabel:
|
||||
context.l10n.losslessConversionLabels.originalQuality,
|
||||
originalLabel: losslessLabels.original,
|
||||
originalQualityLabel: losslessLabels.originalQuality,
|
||||
),
|
||||
)
|
||||
: isLossless
|
||||
@@ -5819,7 +5818,7 @@ class _QueueTabState extends ConsumerState<QueueTab> {
|
||||
final newQuality = convertedAudioQualityLabel(
|
||||
targetFormat: targetFormat,
|
||||
bitrate: bitrate,
|
||||
labels: context.l10n.losslessConversionLabels,
|
||||
labels: losslessLabels,
|
||||
losslessQuality: losslessQuality,
|
||||
actualBitDepth: convertedBitDepth,
|
||||
actualSampleRate: convertedSampleRate,
|
||||
|
||||
@@ -1309,10 +1309,7 @@ class _EditMetadataSheetState extends State<_EditMetadataSheet> {
|
||||
],
|
||||
),
|
||||
),
|
||||
Divider(
|
||||
height: 1,
|
||||
color: cs.outlineVariant.withValues(alpha: 0.5),
|
||||
),
|
||||
Divider(height: 1, color: cs.outlineVariant.withValues(alpha: 0.5)),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
controller: scrollController,
|
||||
@@ -1325,10 +1322,7 @@ class _EditMetadataSheetState extends State<_EditMetadataSheet> {
|
||||
title: context.l10n.trackMetadata,
|
||||
children: [
|
||||
_field(context.l10n.editMetadataFieldTitle, _titleCtrl),
|
||||
_field(
|
||||
context.l10n.editMetadataFieldArtist,
|
||||
_artistCtrl,
|
||||
),
|
||||
_field(context.l10n.editMetadataFieldArtist, _artistCtrl),
|
||||
_field(context.l10n.editMetadataFieldAlbum, _albumCtrl),
|
||||
_field(
|
||||
context.l10n.editMetadataFieldAlbumArtist,
|
||||
@@ -1401,10 +1395,7 @@ class _EditMetadataSheetState extends State<_EditMetadataSheet> {
|
||||
expanded: _showAdvanced,
|
||||
children: [
|
||||
if (_showAdvanced) ...[
|
||||
_field(
|
||||
context.l10n.editMetadataFieldLabel,
|
||||
_labelCtrl,
|
||||
),
|
||||
_field(context.l10n.editMetadataFieldLabel, _labelCtrl),
|
||||
_field(
|
||||
context.l10n.editMetadataFieldCopyright,
|
||||
_copyrightCtrl,
|
||||
@@ -1632,7 +1623,8 @@ class _EditMetadataSheetState extends State<_EditMetadataSheet> {
|
||||
child: _buildCoverPreviewTile(
|
||||
cs: cs,
|
||||
path: _selectedCoverPath!,
|
||||
label: _selectedCoverName ==
|
||||
label:
|
||||
_selectedCoverName ==
|
||||
_EditMetadataSheet._onlineCoverSentinel
|
||||
? context.l10n.trackCoverOnline
|
||||
: (_selectedCoverName ??
|
||||
|
||||
@@ -4105,17 +4105,20 @@ class _TrackMetadataScreenState extends ConsumerState<TrackMetadataScreen> {
|
||||
selectedMaxBitDepth == null &&
|
||||
selectedMaxSampleRate == null
|
||||
? context.l10n.trackConvertLosslessHint
|
||||
: context.l10n.trackConvertLosslessOutputWithCap(
|
||||
losslessQualityLabel(
|
||||
LosslessConversionQuality(
|
||||
maxBitDepth: selectedMaxBitDepth,
|
||||
maxSampleRate: selectedMaxSampleRate,
|
||||
: context.l10n
|
||||
.trackConvertLosslessOutputWithCap(
|
||||
losslessQualityLabel(
|
||||
LosslessConversionQuality(
|
||||
maxBitDepth:
|
||||
selectedMaxBitDepth,
|
||||
maxSampleRate:
|
||||
selectedMaxSampleRate,
|
||||
),
|
||||
originalLabel: labels.original,
|
||||
originalQualityLabel:
|
||||
labels.originalQuality,
|
||||
),
|
||||
),
|
||||
originalLabel: labels.original,
|
||||
originalQualityLabel:
|
||||
labels.originalQuality,
|
||||
),
|
||||
),
|
||||
style: Theme.of(context).textTheme.bodySmall
|
||||
?.copyWith(color: colorScheme.primary),
|
||||
),
|
||||
@@ -4159,7 +4162,8 @@ class _TrackMetadataScreenState extends ConsumerState<TrackMetadataScreen> {
|
||||
maxSampleRate: selectedMaxSampleRate,
|
||||
),
|
||||
originalLabel: labels.original,
|
||||
originalQualityLabel: labels.originalQuality,
|
||||
originalQualityLabel:
|
||||
labels.originalQuality,
|
||||
),
|
||||
)
|
||||
: context.l10n.trackConvertActionLabelLossy(
|
||||
@@ -4701,6 +4705,7 @@ class _TrackMetadataScreenState extends ConsumerState<TrackMetadataScreen> {
|
||||
}) async {
|
||||
if (_isConverting) return;
|
||||
setState(() => _isConverting = true);
|
||||
final losslessLabels = context.l10n.losslessConversionLabels;
|
||||
|
||||
try {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
@@ -4819,7 +4824,7 @@ class _TrackMetadataScreenState extends ConsumerState<TrackMetadataScreen> {
|
||||
final newQuality = convertedAudioQualityLabel(
|
||||
targetFormat: targetFormat,
|
||||
bitrate: bitrate,
|
||||
labels: context.l10n.losslessConversionLabels,
|
||||
labels: losslessLabels,
|
||||
losslessQuality: losslessQuality,
|
||||
actualBitDepth: convertedBitDepth,
|
||||
actualSampleRate: convertedSampleRate,
|
||||
|
||||
Reference in new issue
Block a user