From 474ddd1f4163f91bd5db87f681cd44cd529ba109 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Mon, 17 Oct 2022 18:38:05 +0200 Subject: [PATCH] Improved select interface modal bottom sheet --- .../settings/dhcp/select_interface_modal.dart | 218 +++++++++--------- 1 file changed, 112 insertions(+), 106 deletions(-) diff --git a/lib/screens/settings/dhcp/select_interface_modal.dart b/lib/screens/settings/dhcp/select_interface_modal.dart index b134f06..b223122 100644 --- a/lib/screens/settings/dhcp/select_interface_modal.dart +++ b/lib/screens/settings/dhcp/select_interface_modal.dart @@ -27,116 +27,122 @@ class SelectInterfaceModal extends StatelessWidget { ), child: Column( children: [ - const Padding( - padding: EdgeInsets.only(top: 28), - child: Icon( - Icons.settings_ethernet_rounded, - size: 26, - ), - ), - const SizedBox(height: 20), - Text( - AppLocalizations.of(context)!.selectInterface, - style: const TextStyle( - fontSize: 24 - ), - ), - const SizedBox(height: 20), Expanded( - child: ListView.builder( + child: ListView( controller: scrollController, - shrinkWrap: true, - itemCount: interfaces.length, - itemBuilder: (context, index) => Material( - color: Colors.transparent, - child: InkWell( - onTap: () { - Navigator.pop(context); - onSelect(interfaces[index]); - }, - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - interfaces[index].name, - style: const TextStyle( - fontSize: 18 - ), - ), - Row( - children: [ - Text( - "${AppLocalizations.of(context)!.hardwareAddress}: ", - style: const TextStyle( - fontWeight: FontWeight.w500 - ), - ), - Text(interfaces[index].hardwareAddress), - ], - ), - const SizedBox(height: 5), - if (interfaces[index].flags.isNotEmpty) ...[ - Row( - children: [ - const Text( - "Flags: ", - style: TextStyle( - fontWeight: FontWeight.w500 - ), - ), - Text(interfaces[index].flags.join(', ')), - ], - ), - const SizedBox(height: 5), - ], - if (interfaces[index].gatewayIp != '') ...[ - Row( - children: [ - Text( - "${AppLocalizations.of(context)!.gatewayIp}: ", - style: const TextStyle( - fontWeight: FontWeight.w500 - ), - ), - Text(interfaces[index].gatewayIp), - ], - ), - const SizedBox(height: 5), - ], - if (interfaces[index].ipv4Addresses.isNotEmpty) ...[ - Row( - children: [ - Text( - "${AppLocalizations.of(context)!.ipv4addresses}: ", - style: const TextStyle( - fontWeight: FontWeight.w500 - ), - ), - Text(interfaces[index].ipv4Addresses.join(', ')), - ], - ), - const SizedBox(height: 5), - ], - if (interfaces[index].ipv6Addresses.isNotEmpty) ...[ - Row( - children: [ - Text( - "${AppLocalizations.of(context)!.ipv4addresses}: ", - style: const TextStyle( - fontWeight: FontWeight.w500 - ), - ), - Text(interfaces[index].ipv6Addresses.join(', ')), - ], - ), - ] - ], - ), + children: [ + const Padding( + padding: EdgeInsets.only(top: 28), + child: Icon( + Icons.settings_ethernet_rounded, + size: 26, ), ), - ) + const SizedBox(height: 20), + Text( + AppLocalizations.of(context)!.selectInterface, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 24 + ), + ), + const SizedBox(height: 20), + ListView.builder( + primary: false, + shrinkWrap: true, + itemCount: interfaces.length, + itemBuilder: (context, index) => Material( + color: Colors.transparent, + child: InkWell( + onTap: () { + Navigator.pop(context); + onSelect(interfaces[index]); + }, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + interfaces[index].name, + style: const TextStyle( + fontSize: 18 + ), + ), + Row( + children: [ + Text( + "${AppLocalizations.of(context)!.hardwareAddress}: ", + style: const TextStyle( + fontWeight: FontWeight.w500 + ), + ), + Text(interfaces[index].hardwareAddress), + ], + ), + const SizedBox(height: 5), + if (interfaces[index].flags.isNotEmpty) ...[ + Row( + children: [ + const Text( + "Flags: ", + style: TextStyle( + fontWeight: FontWeight.w500 + ), + ), + Text(interfaces[index].flags.join(', ')), + ], + ), + const SizedBox(height: 5), + ], + if (interfaces[index].gatewayIp != '') ...[ + Row( + children: [ + Text( + "${AppLocalizations.of(context)!.gatewayIp}: ", + style: const TextStyle( + fontWeight: FontWeight.w500 + ), + ), + Text(interfaces[index].gatewayIp), + ], + ), + const SizedBox(height: 5), + ], + if (interfaces[index].ipv4Addresses.isNotEmpty) ...[ + Row( + children: [ + Text( + "${AppLocalizations.of(context)!.ipv4addresses}: ", + style: const TextStyle( + fontWeight: FontWeight.w500 + ), + ), + Text(interfaces[index].ipv4Addresses.join(', ')), + ], + ), + const SizedBox(height: 5), + ], + if (interfaces[index].ipv6Addresses.isNotEmpty) ...[ + Row( + children: [ + Text( + "${AppLocalizations.of(context)!.ipv4addresses}: ", + style: const TextStyle( + fontWeight: FontWeight.w500 + ), + ), + Text(interfaces[index].ipv6Addresses.join(', ')), + ], + ), + ] + ], + ), + ), + ), + ) + ), + ], ), ), Padding(