import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:spotube/extensions/context.dart'; import 'package:spotube/models/metadata/metadata.dart'; final replaceDownloadedFileState = StateProvider((ref) => null); class ReplaceDownloadedDialog extends ConsumerWidget { final SpotubeTrackObject track; const ReplaceDownloadedDialog({required this.track, super.key}); @override Widget build(BuildContext context, ref) { final groupValue = ref.watch(replaceDownloadedFileState); final replaceAll = ref.watch(replaceDownloadedFileState); return AlertDialog( title: Text(context.l10n.track_exists(track.name)), content: RadioGroup( value: groupValue, onChanged: (value) { ref.read(replaceDownloadedFileState.notifier).state = value; }, child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(context.l10n.do_you_want_to_replace), const Gap(16), RadioItem( value: true, trailing: Text(context.l10n.replace_downloaded_tracks), ), const Gap(8), RadioItem( value: false, trailing: Text(context.l10n.skip_download_tracks), ), ], ), ), actions: [ Button.outline( onPressed: replaceAll == true ? null : () { Navigator.pop(context, false); }, child: Text(context.l10n.skip), ), Button.primary( onPressed: replaceAll == false ? null : () { Navigator.pop(context, true); }, child: Text(context.l10n.replace), ), ], ); } }