mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-23 23:39:12 +00:00
Change opening client modal
This commit is contained in:
parent
5b715d0456
commit
2ad99e737d
6 changed files with 82 additions and 99 deletions
|
@ -9,7 +9,7 @@ import 'package:flutter_split_view/flutter_split_view.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/clients/client/client_screen.dart';
|
import 'package:adguard_home_manager/screens/clients/client/client_screen_functions.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/client/added_client_tile.dart';
|
import 'package:adguard_home_manager/screens/clients/client/added_client_tile.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/client/remove_client_modal.dart';
|
import 'package:adguard_home_manager/screens/clients/client/remove_client_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/fab.dart';
|
import 'package:adguard_home_manager/screens/clients/fab.dart';
|
||||||
|
@ -128,31 +128,12 @@ class _AddedListState extends State<AddedList> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void openClientModal(Client client) {
|
void openClientModal(Client client) {
|
||||||
if (width > 900 || !(Platform.isAndroid | Platform.isIOS)) {
|
openClientFormModal(
|
||||||
showDialog(
|
context: context,
|
||||||
barrierDismissible: false,
|
width: width,
|
||||||
context: context,
|
onConfirm: confirmEditClient,
|
||||||
builder: (BuildContext context) => ClientScreen(
|
onDelete: deleteClient
|
||||||
onConfirm: confirmEditClient,
|
);
|
||||||
serverVersion: statusProvider.serverStatus!.serverVersion,
|
|
||||||
onDelete: deleteClient,
|
|
||||||
client: client,
|
|
||||||
dialog: true,
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Navigator.push(context, MaterialPageRoute(
|
|
||||||
fullscreenDialog: true,
|
|
||||||
builder: (BuildContext context) => ClientScreen(
|
|
||||||
onConfirm: confirmEditClient,
|
|
||||||
serverVersion: statusProvider.serverStatus!.serverVersion,
|
|
||||||
onDelete: deleteClient,
|
|
||||||
client: client,
|
|
||||||
dialog: false,
|
|
||||||
)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void openDeleteModal(Client client) {
|
void openDeleteModal(Client client) {
|
||||||
|
|
|
@ -20,18 +20,16 @@ import 'package:adguard_home_manager/models/clients.dart';
|
||||||
|
|
||||||
class ClientScreen extends StatefulWidget {
|
class ClientScreen extends StatefulWidget {
|
||||||
final Client? client;
|
final Client? client;
|
||||||
final String serverVersion;
|
|
||||||
final void Function(Client) onConfirm;
|
final void Function(Client) onConfirm;
|
||||||
final void Function(Client)? onDelete;
|
final void Function(Client)? onDelete;
|
||||||
final bool dialog;
|
final bool fullScreen;
|
||||||
|
|
||||||
const ClientScreen({
|
const ClientScreen({
|
||||||
Key? key,
|
Key? key,
|
||||||
this.client,
|
this.client,
|
||||||
required this.serverVersion,
|
|
||||||
required this.onConfirm,
|
required this.onConfirm,
|
||||||
this.onDelete,
|
this.onDelete,
|
||||||
required this.dialog
|
required this.fullScreen
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -81,7 +79,7 @@ class _ClientScreenState extends State<ClientScreen> {
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
version = serverVersionIsAhead(
|
version = serverVersionIsAhead(
|
||||||
currentVersion: widget.serverVersion,
|
currentVersion: Provider.of<StatusProvider>(context, listen: false).serverStatus!.serverVersion,
|
||||||
referenceVersion: 'v0.107.28',
|
referenceVersion: 'v0.107.28',
|
||||||
referenceVersionBeta: 'v0.108.0-b.33'
|
referenceVersionBeta: 'v0.108.0-b.33'
|
||||||
);
|
);
|
||||||
|
@ -380,7 +378,26 @@ class _ClientScreenState extends State<ClientScreen> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (widget.dialog == true) {
|
if (widget.fullScreen == true) {
|
||||||
|
return Dialog.fullscreen(
|
||||||
|
child: Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
leading: IconButton(
|
||||||
|
onPressed: () => Navigator.pop(context),
|
||||||
|
icon: const Icon(Icons.close)
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
widget.client != null
|
||||||
|
? AppLocalizations.of(context)!.client
|
||||||
|
: AppLocalizations.of(context)!.addClient
|
||||||
|
),
|
||||||
|
actions: actions(),
|
||||||
|
),
|
||||||
|
body: content(true)
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
return Dialog(
|
return Dialog(
|
||||||
child: ConstrainedBox(
|
child: ConstrainedBox(
|
||||||
constraints: const BoxConstraints(
|
constraints: const BoxConstraints(
|
||||||
|
@ -421,22 +438,5 @@ class _ClientScreenState extends State<ClientScreen> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
return Scaffold(
|
|
||||||
appBar: AppBar(
|
|
||||||
leading: IconButton(
|
|
||||||
onPressed: () => Navigator.pop(context),
|
|
||||||
icon: const Icon(Icons.close)
|
|
||||||
),
|
|
||||||
title: Text(
|
|
||||||
widget.client != null
|
|
||||||
? AppLocalizations.of(context)!.client
|
|
||||||
: AppLocalizations.of(context)!.addClient
|
|
||||||
),
|
|
||||||
actions: actions(),
|
|
||||||
),
|
|
||||||
body: content(true)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,11 +1,15 @@
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/screens/clients/client/client_screen.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/client/remove_client_modal.dart';
|
import 'package:adguard_home_manager/screens/clients/client/remove_client_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/client/safe_search_modal.dart';
|
import 'package:adguard_home_manager/screens/clients/client/safe_search_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/client/services_modal.dart';
|
import 'package:adguard_home_manager/screens/clients/client/services_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/client/tags_modal.dart';
|
import 'package:adguard_home_manager/screens/clients/client/tags_modal.dart';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/models/clients.dart';
|
||||||
import 'package:adguard_home_manager/providers/clients_provider.dart';
|
import 'package:adguard_home_manager/providers/clients_provider.dart';
|
||||||
import 'package:adguard_home_manager/models/safe_search.dart';
|
import 'package:adguard_home_manager/models/safe_search.dart';
|
||||||
|
|
||||||
|
@ -85,3 +89,38 @@ bool checkValidValues({
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void openClientFormModal({
|
||||||
|
required BuildContext context,
|
||||||
|
required double width,
|
||||||
|
Client? client,
|
||||||
|
required void Function(Client) onConfirm,
|
||||||
|
void Function(Client)? onDelete,
|
||||||
|
}) {
|
||||||
|
showGeneralDialog(
|
||||||
|
context: context,
|
||||||
|
barrierColor: !(width > 900 || !(Platform.isAndroid | Platform.isIOS))
|
||||||
|
?Colors.transparent
|
||||||
|
: Colors.black54,
|
||||||
|
transitionBuilder: (context, anim1, anim2, child) {
|
||||||
|
return SlideTransition(
|
||||||
|
position: Tween(
|
||||||
|
begin: const Offset(0, 1),
|
||||||
|
end: const Offset(0, 0)
|
||||||
|
).animate(
|
||||||
|
CurvedAnimation(
|
||||||
|
parent: anim1,
|
||||||
|
curve: Curves.easeInOutCubicEmphasized
|
||||||
|
)
|
||||||
|
),
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
pageBuilder: (context, animation, secondaryAnimation) => ClientScreen(
|
||||||
|
fullScreen: !(width > 900 || !(Platform.isAndroid | Platform.isIOS)),
|
||||||
|
client: client,
|
||||||
|
onConfirm: onConfirm,
|
||||||
|
onDelete: onDelete,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
import 'package:adguard_home_manager/screens/clients/client/client_screen_functions.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
|
|
@ -8,6 +8,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/screens/clients/client/client_screen.dart';
|
import 'package:adguard_home_manager/screens/clients/client/client_screen.dart';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/screens/clients/client/client_screen_functions.dart';
|
||||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||||
import 'package:adguard_home_manager/providers/clients_provider.dart';
|
import 'package:adguard_home_manager/providers/clients_provider.dart';
|
||||||
import 'package:adguard_home_manager/models/clients.dart';
|
import 'package:adguard_home_manager/models/clients.dart';
|
||||||
|
@ -51,27 +52,11 @@ class ClientsFab extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
void openAddClient() {
|
void openAddClient() {
|
||||||
if (width > 900 || !(Platform.isAndroid | Platform.isIOS)) {
|
openClientFormModal(
|
||||||
showDialog(
|
context: context,
|
||||||
barrierDismissible: false,
|
width: width,
|
||||||
context: context,
|
onConfirm: confirmAddClient
|
||||||
builder: (BuildContext context) => ClientScreen(
|
);
|
||||||
onConfirm: confirmAddClient,
|
|
||||||
serverVersion: statusProvider.serverStatus!.serverVersion,
|
|
||||||
dialog: true,
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Navigator.push(context, MaterialPageRoute(
|
|
||||||
fullscreenDialog: true,
|
|
||||||
builder: (BuildContext context) => ClientScreen(
|
|
||||||
onConfirm: confirmAddClient,
|
|
||||||
serverVersion: statusProvider.serverStatus!.serverVersion,
|
|
||||||
dialog: false,
|
|
||||||
)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FloatingActionButton(
|
return FloatingActionButton(
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
// ignore_for_file: use_build_context_synchronously
|
// ignore_for_file: use_build_context_synchronously
|
||||||
|
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:animations/animations.dart';
|
import 'package:animations/animations.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/clients/client/remove_client_modal.dart';
|
import 'package:adguard_home_manager/screens/clients/client/remove_client_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/client/client_screen.dart';
|
import 'package:adguard_home_manager/screens/clients/client/client_screen_functions.dart';
|
||||||
import 'package:adguard_home_manager/screens/clients/options_modal.dart';
|
import 'package:adguard_home_manager/screens/clients/options_modal.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/widgets/section_label.dart';
|
import 'package:adguard_home_manager/widgets/section_label.dart';
|
||||||
|
@ -137,31 +135,12 @@ class _SearchClientsState extends State<SearchClients> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void openClientModal(Client client) {
|
void openClientModal(Client client) {
|
||||||
if (width > 900 || !(Platform.isAndroid | Platform.isIOS)) {
|
openClientFormModal(
|
||||||
showDialog(
|
context: context,
|
||||||
barrierDismissible: false,
|
width: width,
|
||||||
context: context,
|
onConfirm: confirmEditClient,
|
||||||
builder: (BuildContext context) => ClientScreen(
|
onDelete: deleteClient
|
||||||
onConfirm: confirmEditClient,
|
);
|
||||||
serverVersion: statusProvider.serverStatus!.serverVersion,
|
|
||||||
onDelete: deleteClient,
|
|
||||||
client: client,
|
|
||||||
dialog: true,
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Navigator.push(context, MaterialPageRoute(
|
|
||||||
fullscreenDialog: true,
|
|
||||||
builder: (BuildContext context) => ClientScreen(
|
|
||||||
onConfirm: confirmEditClient,
|
|
||||||
serverVersion: statusProvider.serverStatus!.serverVersion,
|
|
||||||
onDelete: deleteClient,
|
|
||||||
client: client,
|
|
||||||
dialog: false,
|
|
||||||
)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void openDeleteModal(Client client) {
|
void openDeleteModal(Client client) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue