Changed dns addresses modal

This commit is contained in:
Juan Gilsanz Polo 2024-02-21 10:50:02 +01:00
parent dcad63fe5c
commit 7a89aea3a5
2 changed files with 76 additions and 44 deletions

View file

@ -1,54 +1,71 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
import 'package:adguard_home_manager/widgets/list_bottom_sheet.dart';
class DnsAddressesModal extends StatelessWidget { class DnsAddressesModal extends StatelessWidget {
final bool isDialog;
final List<String> dnsAddresses; final List<String> dnsAddresses;
const DnsAddressesModal({ const DnsAddressesModal({
Key? key, super.key,
required this.isDialog,
required this.dnsAddresses, required this.dnsAddresses,
}) : super(key: key); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AlertDialog( if (isDialog == true) {
title: Column( return AlertDialog(
children: [ title: Column(
Icon( children: [
Icons.route_rounded, Icon(
color: Theme.of(context).listTileTheme.iconColor Icons.route_rounded,
), color: Theme.of(context).listTileTheme.iconColor
const SizedBox(height: 16),
Text(
AppLocalizations.of(context)!.dnsAddresses,
style: TextStyle(
color: Theme.of(context).colorScheme.onSurface
), ),
const SizedBox(height: 16),
Text(
AppLocalizations.of(context)!.dnsAddresses,
style: TextStyle(
color: Theme.of(context).colorScheme.onSurface
),
)
],
),
content: ConstrainedBox(
constraints: const BoxConstraints(maxWidth: 500),
child: SingleChildScrollView(
child: Wrap(
children: dnsAddresses.map((address) => ListTile(
title: Text(
address,
style: TextStyle(
fontWeight: FontWeight.normal,
color: Theme.of(context).listTileTheme.textColor
),
),
)).toList(),
),
),
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: Text(AppLocalizations.of(context)!.close)
) )
], ],
), );
content: SizedBox( }
height: dnsAddresses.length*56 < 500 else {
? dnsAddresses.length*56 : 500, return ListBottomSheet(
width: double.minPositive, icon: Icons.route_rounded,
child: ListView( title: AppLocalizations.of(context)!.dnsAddresses,
children: dnsAddresses.map((address) => ListTile( children: dnsAddresses.map((address) => CustomListTile(
title: Text( title: address,
address, padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
style: TextStyle( )).toList(),
fontWeight: FontWeight.normal, );
color: Theme.of(context).listTileTheme.textColor }
),
),
)).toList(),
),
),
actions: [
TextButton(
onPressed: () => Navigator.pop(context),
child: Text(AppLocalizations.of(context)!.close)
)
],
);
} }
} }

View file

@ -86,12 +86,27 @@ class _ServerInformationState extends State<ServerInformation> {
title: AppLocalizations.of(context)!.dnsAddresses, title: AppLocalizations.of(context)!.dnsAddresses,
subtitle: AppLocalizations.of(context)!.seeDnsAddresses, subtitle: AppLocalizations.of(context)!.seeDnsAddresses,
onTap: () { onTap: () {
showModal( if (width > 700) {
context: context, showDialog(
builder: (context) => DnsAddressesModal( context: context,
dnsAddresses: serverInfo.data!.dnsAddresses builder: (context) => DnsAddressesModal(
) dnsAddresses: serverInfo.data!.dnsAddresses,
); isDialog: true,
)
);
}
else {
showModalBottomSheet(
context: context,
builder: (context) => DnsAddressesModal(
dnsAddresses: serverInfo.data!.dnsAddresses,
isDialog: false,
),
isScrollControlled: true,
backgroundColor: Colors.transparent,
useSafeArea: true
);
}
}, },
), ),
CustomListTile( CustomListTile(