Adapted servers list and connection screen

This commit is contained in:
Juan Gilsanz Polo 2023-04-30 20:18:29 +02:00
parent f631780e18
commit 33125e543c
8 changed files with 743 additions and 225 deletions

View file

@ -5,6 +5,7 @@ import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/widgets/servers_list/servers_list_item.dart';
import 'package:adguard_home_manager/widgets/servers_list/servers_tile_item.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart';
@ -13,6 +14,7 @@ class ServersList extends StatelessWidget {
final List<ExpandableController> controllers;
final Function(int) onChange;
final ScrollController scrollController;
final double breakingWidth;
const ServersList({
Key? key,
@ -20,23 +22,44 @@ class ServersList extends StatelessWidget {
required this.controllers,
required this.onChange,
required this.scrollController,
required this.breakingWidth
}) : super(key: key);
@override
Widget build(BuildContext context) {
final serversProvider = Provider.of<ServersProvider>(context);
final width = MediaQuery.of(context).size.width;
if (serversProvider.serversList.isNotEmpty) {
return ListView.builder(
controller: scrollController,
itemCount: serversProvider.serversList.length,
itemBuilder: (context, index) => ServersListItem(
expandableController: controllers[index],
server: serversProvider.serversList[index],
index: index,
onChange: onChange
)
);
if (width > breakingWidth) {
return ListView(
children: [
Wrap(
children: serversProvider.serversList.asMap().entries.map(
(s) => ServersTileItem(
server: serversProvider.serversList[s.key],
index: s.key,
onChange: onChange
)
).toList(),
),
const SizedBox(height: 8)
],
);
}
else {
return ListView.builder(
controller: scrollController,
itemCount: serversProvider.serversList.length,
itemBuilder: (context, index) => ServersListItem(
expandableController: controllers[index],
server: serversProvider.serversList[index],
index: index,
onChange: onChange
)
);
}
}
else {
return SizedBox(