From 54ddc1f59c1edf56aee35385088fc7436929f6ff Mon Sep 17 00:00:00 2001 From: ViscousPot Date: Sat, 14 Mar 2026 02:08:49 +0000 Subject: [PATCH] feat: auto fill playlist name during import --- lib/screens/playlist_screen.dart | 2 +- lib/widgets/playlist_picker_sheet.dart | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/screens/playlist_screen.dart b/lib/screens/playlist_screen.dart index ba16a01..8a035de 100644 --- a/lib/screens/playlist_screen.dart +++ b/lib/screens/playlist_screen.dart @@ -533,7 +533,7 @@ class _PlaylistScreenState extends ConsumerState { tooltip: context.l10n.tooltipAddToPlaylist, onPressed: _tracks.isEmpty ? null - : () => showAddTracksToPlaylistSheet(context, ref, _tracks), + : () => showAddTracksToPlaylistSheet(context, ref, _tracks, playlistNamePrefill: widget.playlistName), ); } diff --git a/lib/widgets/playlist_picker_sheet.dart b/lib/widgets/playlist_picker_sheet.dart index 2b6fd16..238b535 100644 --- a/lib/widgets/playlist_picker_sheet.dart +++ b/lib/widgets/playlist_picker_sheet.dart @@ -20,6 +20,7 @@ Future showAddTracksToPlaylistSheet( BuildContext context, WidgetRef ref, List tracks, + {String? playlistNamePrefill} ) async { if (tracks.isEmpty) return; @@ -31,15 +32,16 @@ Future showAddTracksToPlaylistSheet( showDragHandle: true, isScrollControlled: true, builder: (sheetContext) { - return _PlaylistPickerSheetContent(tracks: tracks); + return _PlaylistPickerSheetContent(tracks: tracks, playlistNamePrefill: playlistNamePrefill); }, ); } class _PlaylistPickerSheetContent extends ConsumerStatefulWidget { final List tracks; + final String? playlistNamePrefill; - const _PlaylistPickerSheetContent({required this.tracks}); + const _PlaylistPickerSheetContent({required this.tracks, this.playlistNamePrefill}); @override ConsumerState<_PlaylistPickerSheetContent> createState() => @@ -130,7 +132,7 @@ class _PlaylistPickerSheetContentState leading: const Icon(Icons.add_circle_outline), title: Text(context.l10n.collectionCreatePlaylist), onTap: () async { - final name = await _promptPlaylistName(context); + final name = await _promptPlaylistName(context, widget.playlistNamePrefill); if (name == null || name.trim().isEmpty || !context.mounted) { return; } @@ -221,8 +223,8 @@ class _PlaylistPickerSheetContentState } } -Future _promptPlaylistName(BuildContext context) async { - final controller = TextEditingController(); +Future _promptPlaylistName(BuildContext context, String? playlistNamePrefill) async { + final controller = TextEditingController(text: playlistNamePrefill); final formKey = GlobalKey(); final result = await showDialog(