From 96cc487b55f0302f083d8478a6b862912b365537 Mon Sep 17 00:00:00 2001 From: qlionbleusam Date: Sat, 29 Aug 2026 08:48:41 +0200 Subject: [PATCH] feat(session): add armory shortcut and 50-shot preset --- .../session/session_setup_screen.dart | 54 ++++++++++++++++--- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/lib/features/session/session_setup_screen.dart b/lib/features/session/session_setup_screen.dart index 68657c48..6e55fb62 100644 --- a/lib/features/session/session_setup_screen.dart +++ b/lib/features/session/session_setup_screen.dart @@ -28,7 +28,7 @@ class _SessionSetupScreenState extends State { DateTime _selectedDate = DateTime.now(); static const List _presetDistances = [10, 15, 25, 50, 100, 200]; - static const List _presetShots = [3, 5, 10, 15, 20, 30]; + static const List _presetShots = [3, 5, 10, 15, 20, 30, 50]; @override void initState() { @@ -53,6 +53,35 @@ class _SessionSetupScreenState extends State { } } + Future _openArmory() async { + final knownIds = _availableWeapons.map((w) => w.id).toSet(); + + await Navigator.push( + context, + MaterialPageRoute(builder: (_) => const WeaponListScreen()), + ); + if (!mounted) return; + + await _loadWeapons(); + if (!mounted) return; + + // Selectionne automatiquement l'arme qui vient d'etre ajoutee. + Weapon? added; + for (final weapon in _availableWeapons) { + if (!knownIds.contains(weapon.id)) { + added = weapon; + break; + } + } + if (added != null) { + final newWeapon = added; + setState(() { + _selectedWeapon = newWeapon; + _updateSettingsForWeapon(newWeapon); + }); + } + } + void _updateSettingsForWeapon(Weapon weapon) { _shotsPerTarget = weapon.magazineCapacity > 0 ? weapon.magazineCapacity : 5; _distance = (weapon.type == WeaponType.handgun) ? 25 : 50; @@ -177,12 +206,7 @@ class _SessionSetupScreenState extends State { ), const SizedBox(height: 20), ElevatedButton.icon( - onPressed: () { - Navigator.push( - context, - MaterialPageRoute(builder: (_) => const WeaponListScreen()), - ).then((_) => _loadWeapons()); - }, + onPressed: _openArmory, icon: const Icon(Icons.shield), label: const Text('Aller à l\'armurerie'), ), @@ -236,7 +260,21 @@ class _SessionSetupScreenState extends State { } }, ), - const SizedBox(height: 12), + const SizedBox(height: 4), + Align( + alignment: Alignment.centerLeft, + child: TextButton.icon( + onPressed: _openArmory, + icon: const Icon(Icons.add_circle_outline, size: 18), + label: const Text('Ajouter une nouvelle arme'), + style: TextButton.styleFrom( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + visualDensity: VisualDensity.compact, + tapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + ), + ), + const SizedBox(height: 8), InkWell( onTap: _pickDate, borderRadius: BorderRadius.circular(12),