From 1832d3d37483faeb13ac01a31a5e0328c2e87a08 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Mon, 24 Oct 2022 01:30:56 +0200 Subject: [PATCH] Modified dhcp leases --- lib/screens/settings/dhcp/dhcp.dart | 82 ++++++++----------- .../{dhcp_static.dart => dhcp_leases.dart} | 63 ++++++++------ 2 files changed, 74 insertions(+), 71 deletions(-) rename lib/screens/settings/dhcp/{dhcp_static.dart => dhcp_leases.dart} (77%) diff --git a/lib/screens/settings/dhcp/dhcp.dart b/lib/screens/settings/dhcp/dhcp.dart index afc55ff..606064d 100644 --- a/lib/screens/settings/dhcp/dhcp.dart +++ b/lib/screens/settings/dhcp/dhcp.dart @@ -6,7 +6,7 @@ import 'package:bottom_sheet/bottom_sheet.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:adguard_home_manager/screens/settings/section_label.dart'; -import 'package:adguard_home_manager/screens/settings/dhcp/dhcp_static.dart'; +import 'package:adguard_home_manager/screens/settings/dhcp/dhcp_leases.dart'; import 'package:adguard_home_manager/screens/settings/dhcp/select_interface_modal.dart'; import 'package:adguard_home_manager/functions/snackbar.dart'; @@ -601,60 +601,47 @@ class _DhcpWidgetState extends State { ), ), ], + const SizedBox(height: 20), SectionLabel( label: AppLocalizations.of(context)!.dhcpLeases, ), - if (serversProvider.dhcp.data!.dhcpStatus.leases.isNotEmpty) ListView.builder( - padding: const EdgeInsets.only(top: 0), - itemCount: serversProvider.dhcp.data!.dhcpStatus.leases.length, - itemBuilder: (context, index) => Container( - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), - child: Column( - children: [ - Text( - serversProvider.dhcp.data!.dhcpStatus.leases[index].ip, - style: const TextStyle( - fontWeight: FontWeight.w500 - ), - ), - const SizedBox(height: 3), - Text( - serversProvider.dhcp.data!.dhcpStatus.leases[index].mac, - style: const TextStyle( - color: Colors.grey, - fontSize: 14 - ), - ), - const SizedBox(height: 3), - Text( - serversProvider.dhcp.data!.dhcpStatus.leases[index].hostname, - style: const TextStyle( - fontSize: 14 - ), - ), - ], - ), - ) - ), - if (serversProvider.dhcp.data!.dhcpStatus.leases.isEmpty) Container( - padding: const EdgeInsets.symmetric(horizontal: 28), - child: Text( - AppLocalizations.of(context)!.noLeases, - textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 18, - color: Colors.grey - ), - ), - ), - const SizedBox(height: 20), Material( color: Colors.transparent, child: InkWell( onTap: () { Navigator.push(context, MaterialPageRoute( - builder: (context) => DhcpStatic( - items: serversProvider.dhcp.data!.dhcpStatus.staticLeases + builder: (context) => DhcpLeases( + items: serversProvider.dhcp.data!.dhcpStatus.leases, + staticLeases: false, + ) + )); + }, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 20), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + AppLocalizations.of(context)!.dhcpLeases, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 16 + ), + ), + const Icon(Icons.arrow_forward_rounded) + ], + ), + ), + ), + ), + Material( + color: Colors.transparent, + child: InkWell( + onTap: () { + Navigator.push(context, MaterialPageRoute( + builder: (context) => DhcpLeases( + items: serversProvider.dhcp.data!.dhcpStatus.staticLeases, + staticLeases: true, ) )); }, @@ -676,6 +663,7 @@ class _DhcpWidgetState extends State { ), ), ), + const SizedBox(height: 10) ], ); } diff --git a/lib/screens/settings/dhcp/dhcp_static.dart b/lib/screens/settings/dhcp/dhcp_leases.dart similarity index 77% rename from lib/screens/settings/dhcp/dhcp_static.dart rename to lib/screens/settings/dhcp/dhcp_leases.dart index 608e5d4..d34cb46 100644 --- a/lib/screens/settings/dhcp/dhcp_static.dart +++ b/lib/screens/settings/dhcp/dhcp_leases.dart @@ -15,12 +15,14 @@ import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/models/dhcp.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart'; -class DhcpStatic extends StatelessWidget { +class DhcpLeases extends StatelessWidget { final List items; + final bool staticLeases; - const DhcpStatic({ + const DhcpLeases({ Key? key, required this.items, + required this.staticLeases, }) : super(key: key); @override @@ -129,7 +131,11 @@ class DhcpStatic extends StatelessWidget { return Scaffold( appBar: AppBar( - title: Text(AppLocalizations.of(context)!.dhcpStatic), + title: Text( + staticLeases == true + ? AppLocalizations.of(context)!.dhcpStatic + : AppLocalizations.of(context)!.dhcpLeases, + ), ), body: items.isNotEmpty ? ListView.builder( @@ -145,33 +151,42 @@ class DhcpStatic extends StatelessWidget { Text(items[index].hostname), ], ), - trailing: IconButton( - onPressed: () { - showModal( - context: context, - builder: (context) => DeleteStaticLeaseModal( - onConfirm: () => deleteLease(items[index]) - ) - ); - }, - icon: const Icon(Icons.delete) - ), + trailing: staticLeases == true + ? IconButton( + onPressed: () { + showModal( + context: context, + builder: (context) => DeleteStaticLeaseModal( + onConfirm: () => deleteLease(items[index]) + ) + ); + }, + icon: const Icon(Icons.delete) + ) + : null, ), ) : Center( - child: Text( - AppLocalizations.of(context)!.noDhcpStaticLeases, - textAlign: TextAlign.center, - style: const TextStyle( - color: Colors.grey, - fontSize: 22 + child: Padding( + padding: const EdgeInsets.all(10), + child: Text( + staticLeases == true + ? AppLocalizations.of(context)!.noDhcpStaticLeases + : AppLocalizations.of(context)!.noLeases, + textAlign: TextAlign.center, + style: const TextStyle( + color: Colors.grey, + fontSize: 22 + ), ), ), ), - floatingActionButton: FloatingActionButton( - onPressed: openAddStaticLease, - child: const Icon(Icons.add), - ), + floatingActionButton: staticLeases == true + ? FloatingActionButton( + onPressed: openAddStaticLease, + child: const Icon(Icons.add), + ) + : null, ); } } \ No newline at end of file