From cf8a49886498c6381164931c2d02a6daa43a8e6f Mon Sep 17 00:00:00 2001 From: Janez T Date: Tue, 28 Oct 2025 10:19:28 +0100 Subject: [PATCH] feat: Refactor add channel button implementation and update visibility logic --- lib/screens/contacts_tab.dart | 61 +++++++++++++++++------------------ 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/lib/screens/contacts_tab.dart b/lib/screens/contacts_tab.dart index 41ec826..397fa2c 100644 --- a/lib/screens/contacts_tab.dart +++ b/lib/screens/contacts_tab.dart @@ -127,27 +127,6 @@ class _ContactsTabState extends State { ); } - /// Build the FAB for adding channels - Widget? _buildAddChannelFAB(BuildContext context) { - final appProvider = context.watch(); - final connectionProvider = context.watch(); - final l10n = AppLocalizations.of(context)!; - - // Only show when: - // - NOT in simple mode - // - Device is connected - if (appProvider.isSimpleMode || - !connectionProvider.deviceInfo.isConnected) { - return null; - } - - return FloatingActionButton.extended( - onPressed: () => _showAddChannelDialog(context), - icon: const Icon(Icons.add_circle_outline), - label: Text(l10n.addChannel), - ); - } - @override Widget build(BuildContext context) { final l10n = AppLocalizations.of(context)!; @@ -256,28 +235,48 @@ class _ContactsTabState extends State { ], // Channels (hidden in simple mode) - if (!isSimpleMode && channels.isNotEmpty) ...[ + if (!isSimpleMode) ...[ _SectionHeader( title: l10n.channels, count: channels.length, icon: Icons.broadcast_on_personal, ), - ...channels.map( - (contact) => ContactTile( - contact: contact, - currentPosition: _currentPosition, - calculateDistance: _calculateDistanceInMeters, - formatDistance: _formatDistance, - onNavigateToMap: widget.onNavigateToMap, + if (channels.isNotEmpty) ...[ + ...channels.map( + (contact) => ContactTile( + contact: contact, + currentPosition: _currentPosition, + calculateDistance: _calculateDistanceInMeters, + formatDistance: _formatDistance, + onNavigateToMap: widget.onNavigateToMap, + ), + ), + ], + // Add Channel Button (only show when connected) + if (context.watch().deviceInfo.isConnected) + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: OutlinedButton.icon( + onPressed: () => _showAddChannelDialog(context), + icon: const Icon(Icons.add_circle_outline), + label: Text(l10n.addChannel), + style: OutlinedButton.styleFrom( + padding: const EdgeInsets.symmetric( + horizontal: 24, + vertical: 12, + ), + ), + ), ), - ), ], ], ), ); }, ), - floatingActionButton: _buildAddChannelFAB(context), ); } }