import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../l10n/app_localizations.dart'; import '../../viewmodels/bar_screen_view_model.dart'; import 'duplicate_tab_name_dialog.dart'; /// Returns the name of the opened tab, or null when nothing was opened. Future showNewTabDialog(BuildContext context) async { final l10n = AppLocalizations.of(context); final controller = TextEditingController(); final name = await showDialog( context: context, builder: (dialogContext) { return AlertDialog( title: Text(l10n.openNewTab), content: TextField( controller: controller, autofocus: true, decoration: InputDecoration(labelText: l10n.customerGroupName), onSubmitted: (value) { Navigator.of(dialogContext).pop(value); }, ), actionsPadding: const EdgeInsets.fromLTRB(16, 0, 16, 16), actions: [ TextButton( onPressed: () => Navigator.of(dialogContext).pop(), child: Text(l10n.cancel), ), FilledButton( onPressed: () { Navigator.of(dialogContext).pop(controller.text); }, child: Text(l10n.openTab), ), ], ); }, ); final trimmed = name?.trim() ?? ''; if (trimmed.isEmpty || !context.mounted) return null; final viewModel = context.read(); if (viewModel.hasOpenTabNamed(trimmed) && !await confirmDuplicateTabName(context, trimmed)) { return null; } try { await viewModel.createTab(trimmed); return trimmed; } catch (_) { if (context.mounted) { ScaffoldMessenger.of( context, ).showSnackBar(SnackBar(content: Text(l10n.couldNotCreateTabMessage))); } return null; } }