Added filters lists

This commit is contained in:
Juan Gilsanz Polo 2022-10-07 21:12:04 +02:00
parent 1cb9fbd602
commit 6800c6f20f
5 changed files with 129 additions and 32 deletions

View file

@ -203,5 +203,9 @@
"filtersNotLoaded": "Filters couldn't be loaded.",
"whitelists": "Whitelists",
"blacklists": "Blacklists",
"rules": "Rules"
"rules": "Rules",
"customRules": "Custom rules",
"enabledRules": "Enabled rules",
"enabled": "Enabled",
"disabled": "Disabled"
}

View file

@ -203,5 +203,9 @@
"filtersNotLoaded": "No se han podido cargar los filtros.",
"whitelists": "Listas blancas",
"blacklists": "Listas negras",
"rules": "Reglas"
"rules": "Reglas",
"customRules": "Reglas personalizadas",
"enabledRules": "Reglas activas",
"enabled": "Activada",
"disabled": "Desactivada"
}

View file

@ -0,0 +1,26 @@
import 'package:flutter/material.dart';
class CustomRulesList extends StatelessWidget {
final List<String> data;
const CustomRulesList({
Key? key,
required this.data
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListView.builder(
padding: const EdgeInsets.only(top: 0),
itemCount: data.length,
itemBuilder: (context, index) => ListTile(
onLongPress: () => {},
title: Text(data[index]),
trailing: IconButton(
onPressed: () => {},
icon: const Icon(Icons.delete)
),
)
);
}
}

View file

@ -2,13 +2,10 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/screens/clients/clients_list.dart';
import 'package:adguard_home_manager/screens/clients/blocked_list.dart';
import 'package:adguard_home_manager/screens/clients/added_list.dart';
import 'package:adguard_home_manager/screens/filters/filters_list.dart';
import 'package:adguard_home_manager/screens/filters/custom_rules_list.dart';
import 'package:adguard_home_manager/models/app_log.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart';
import 'package:adguard_home_manager/models/server.dart';
import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/models/clients.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart';
@ -138,7 +135,7 @@ class _FiltersWidgetState extends State<FiltersWidget> with TickerProviderStateM
),
Tab(
icon: const Icon(Icons.shield_rounded),
text: AppLocalizations.of(context)!.rules,
text: AppLocalizations.of(context)!.customRules,
),
]
)
@ -158,30 +155,24 @@ class _FiltersWidgetState extends State<FiltersWidget> with TickerProviderStateM
child: TabBarView(
controller: tabController,
children: [
Container(),
Container(),
Container()
// RefreshIndicator(
// onRefresh: fetchClients,
// child: ClientsList(
// data: serversProvider.clients.data!.autoClientsData,
// fetchClients: fetchClients,
// ),
// ),
// RefreshIndicator(
// onRefresh: fetchClients,
// child: AddedList(
// data: serversProvider.clients.data!.clients,
// fetchClients: fetchClients,
// )
// ),
// RefreshIndicator(
// onRefresh: fetchClients,
// child: BlockedList(
// data: serversProvider.clients.data!.clientsAllowedBlocked!.disallowedClients,
// fetchClients: fetchClients,
// ),
// ),
RefreshIndicator(
onRefresh: fetchFilters,
child: FiltersList(
data: serversProvider.filtering.data!.whitelistFilters
)
),
RefreshIndicator(
onRefresh: fetchFilters,
child: FiltersList(
data: serversProvider.filtering.data!.filters
)
),
RefreshIndicator(
onRefresh: fetchFilters,
child: CustomRulesList(
data: serversProvider.filtering.data!.userRules
)
),
],
),
)

View file

@ -0,0 +1,72 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/functions/number_format.dart';
import 'package:adguard_home_manager/models/filtering.dart';
class FiltersList extends StatelessWidget {
final List<Filter> data;
const FiltersList({
Key? key,
required this.data
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListView.builder(
padding: const EdgeInsets.only(top: 0),
itemCount: data.length,
itemBuilder: (context, index) => Material(
color: Colors.transparent,
child: InkWell(
onTap: () => {},
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: MediaQuery.of(context).size.width-130,
child: Text(
data[index].name,
style: const TextStyle(
fontWeight: FontWeight.w500,
fontSize: 16
),
),
),
const SizedBox(height: 5),
Text(
"${intFormat(data[index].rulesCount, Platform.localeName)} ${AppLocalizations.of(context)!.enabledRules}",
style: const TextStyle(
fontSize: 14,
color: Colors.grey
),
),
],
),
Text(
data[index].enabled == true
? AppLocalizations.of(context)!.enabled
: AppLocalizations.of(context)!.disabled,
style: TextStyle(
color: data[index].enabled == true
? Colors.green
: Colors.red,
fontWeight: FontWeight.w500
),
)
],
),
),
),
),
);
}
}