Added servers screen

This commit is contained in:
Juan Gilsanz Polo 2022-09-27 17:54:00 +02:00
parent b6014955aa
commit ce1b7415c2
3 changed files with 79 additions and 2 deletions

View file

@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/screens/servers/servers.dart';
import 'package:adguard_home_manager/models/server.dart'; import 'package:adguard_home_manager/models/server.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart';
@ -14,6 +16,14 @@ class HomeAppBar extends StatelessWidget with PreferredSizeWidget {
final Server server = serversProvider.selectedServer!; final Server server = serversProvider.selectedServer!;
void navigateServers() {
Future.delayed(const Duration(milliseconds: 0), (() {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => const Servers())
);
}));
}
return AppBar( return AppBar(
title: Padding( title: Padding(
padding: const EdgeInsets.only(bottom: 5), padding: const EdgeInsets.only(bottom: 5),
@ -60,7 +70,16 @@ class HomeAppBar extends StatelessWidget with PreferredSizeWidget {
), ),
PopupMenuButton( PopupMenuButton(
itemBuilder: (context) => [ itemBuilder: (context) => [
PopupMenuItem(
onTap: navigateServers,
child: Row(
children: [
const Icon(Icons.storage_rounded),
const SizedBox(width: 10),
Text(AppLocalizations.of(context)!.servers)
],
),
)
] ]
) )
], ],

View file

@ -73,7 +73,8 @@ class TopItems extends StatelessWidget {
), ),
], ],
), ),
) ),
const SizedBox(height: 10),
] ]
], ],
), ),

View file

@ -0,0 +1,57 @@
import 'package:flutter/material.dart';
import 'package:expandable/expandable.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart';
import 'package:adguard_home_manager/widgets/servers_list/servers_list.dart';
import 'package:adguard_home_manager/widgets/add_server_modal.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart';
class Servers extends StatefulWidget {
const Servers({Key? key}) : super(key: key);
@override
State<Servers> createState() => _ServersState();
}
class _ServersState extends State<Servers> {
List<ExpandableController> expandableControllerList = [];
void expandOrContract(int index) async {
expandableControllerList[index].expanded = !expandableControllerList[index].expanded;
}
@override
Widget build(BuildContext context) {
final serversProvider = Provider.of<ServersProvider>(context);
for (var i = 0; i < serversProvider.serversList.length; i++) {
expandableControllerList.add(ExpandableController());
}
void openAddServerModal() async {
await Future.delayed(const Duration(seconds: 0), (() => {
Navigator.push(context, MaterialPageRoute(
fullscreenDialog: true,
builder: (BuildContext context) => const AddServerModal()
))
}));
}
return Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context)!.servers),
),
body: ServersList(
context: context,
controllers: expandableControllerList,
onChange: expandOrContract
),
floatingActionButton: FloatingActionButton(
onPressed: openAddServerModal,
child: const Icon(Icons.add),
),
);
}
}