Files
SpotiFLAC-Mobile/lib/widgets/download_queue_feedback.dart
T

40 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotiflac_android/l10n/l10n.dart';
import 'package:spotiflac_android/providers/download_queue_provider.dart';
/// Presents live queue effects while the application shell is mounted.
class DownloadQueueFeedback extends ConsumerWidget {
const DownloadQueueFeedback({super.key, required this.child});
final Widget child;
@override
Widget build(BuildContext context, WidgetRef ref) {
ref.listen(downloadQueueProvider.select((queue) => queue.reconnectRetry), (
_,
retry,
) {
if (retry == null ||
!context.mounted ||
WidgetsBinding.instance.lifecycleState != AppLifecycleState.resumed) {
return;
}
final queue = ref.read(downloadQueueProvider.notifier);
final l10n = context.l10n;
ScaffoldMessenger.of(context)
..removeCurrentSnackBar()
..showSnackBar(
SnackBar(
content: Text(l10n.queueNetworkFailedOffline(retry.failedCount)),
action: SnackBarAction(
label: l10n.dialogRetry,
onPressed: () => queue.retryAllFailed(networkOnly: true),
),
),
);
});
return child;
}
}