adguard-home-manager/lib/widgets/servers_list/servers_list.dart

64 lines
1.8 KiB
Dart
Raw Normal View History

2022-09-26 22:43:30 +02:00
// ignore_for_file: use_build_context_synchronously
import 'package:flutter/material.dart';
import 'package:expandable/expandable.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/widgets/servers_list/servers_tile_item.dart';
2022-09-26 22:43:30 +02:00
import 'package:adguard_home_manager/providers/servers_provider.dart';
2023-04-15 03:07:56 +02:00
class ServersList extends StatelessWidget {
2022-09-26 22:43:30 +02:00
final BuildContext context;
final List<ExpandableController> controllers;
final Function(int) onChange;
2022-10-29 19:25:58 +02:00
final ScrollController scrollController;
final double breakingWidth;
2022-09-26 22:43:30 +02:00
const ServersList({
Key? key,
required this.context,
required this.controllers,
2022-10-29 19:25:58 +02:00
required this.onChange,
required this.scrollController,
required this.breakingWidth
2022-09-26 22:43:30 +02:00
}) : super(key: key);
2022-10-28 16:26:55 +02:00
@override
2022-09-26 22:43:30 +02:00
Widget build(BuildContext context) {
final serversProvider = Provider.of<ServersProvider>(context);
2023-04-15 03:07:56 +02:00
if (serversProvider.serversList.isNotEmpty) {
2023-06-15 14:46:09 +02:00
return ListView(
children: [
Wrap(
children: serversProvider.serversList.asMap().entries.map(
(s) => ServersTileItem(
breakingWidth: breakingWidth,
server: serversProvider.serversList[s.key],
index: s.key,
onChange: onChange
)
).toList(),
),
const SizedBox(height: 8)
],
);
2022-09-26 22:43:30 +02:00
}
2023-04-15 03:07:56 +02:00
else {
return SizedBox(
height: double.maxFinite,
child: Center(
child: Text(
AppLocalizations.of(context)!.noSavedConnections,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 24,
color: Theme.of(context).colorScheme.onSurfaceVariant,
2022-09-26 22:43:30 +02:00
),
),
2023-04-15 03:07:56 +02:00
),
2022-09-26 22:43:30 +02:00
);
}
}
}