Added clients allowed and blocked lists

This commit is contained in:
Juan Gilsanz Polo 2022-09-29 00:13:54 +02:00
parent d4a792e5c8
commit f678401fa8
7 changed files with 96 additions and 26 deletions

View file

@ -59,6 +59,10 @@ class _ClientsWidgetState extends State<ClientsWidget> {
super.initState();
}
List<AutoClient> generateClientsList(List<AutoClient> clients, List<String> ips) {
return clients.where((client) => ips.contains(client.ip)).toList();
}
@override
Widget build(BuildContext context) {
final serversProvider = Provider.of<ServersProvider>(context);
@ -121,8 +125,18 @@ class _ClientsWidgetState extends State<ClientsWidget> {
ClientsList(
data: serversProvider.clients.data!.autoClientsData,
),
Container(),
Container()
ClientsList(
data: generateClientsList(
serversProvider.clients.data!.autoClientsData,
serversProvider.clients.data!.clientsAllowedBlocked!.allowedClients,
)
),
ClientsList(
data: generateClientsList(
serversProvider.clients.data!.autoClientsData,
serversProvider.clients.data!.clientsAllowedBlocked!.disallowedClients,
)
),
],
)
)

View file

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/models/clients.dart';
@ -12,22 +13,39 @@ class ClientsList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
padding: const EdgeInsets.only(top: 0),
itemCount: data.length,
itemBuilder: (context, index) => ListTile(
title: Text(
data[index].name != ''
? data[index].name!
: data[index].ip
if (data.isNotEmpty) {
return ListView.builder(
padding: const EdgeInsets.only(top: 0),
itemCount: data.length,
itemBuilder: (context, index) => ListTile(
title: Text(
data[index].name != ''
? data[index].name!
: data[index].ip
),
subtitle: data[index].name != ''
? Text(
data[index].ip
)
: null,
trailing: Text(data[index].source),
)
);
}
else {
return SizedBox(
width: double.maxFinite,
child: Center(
child: Text(
AppLocalizations.of(context)!.noClientsList,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 24,
color: Colors.grey
),
),
),
subtitle: data[index].name != ''
? Text(
data[index].ip
)
: null,
trailing: Text(data[index].source),
)
);
);
}
}
}