mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-08-19 03:07:50 -04:00
Merge branch 'pop-control' into 'main'
Keep android back button from exiting app See merge request veilid/veilidchat!48
This commit is contained in:
commit
38519d57b2
3 changed files with 15 additions and 13 deletions
|
@ -12,6 +12,7 @@ import 'package:veilid_support/veilid_support.dart';
|
||||||
import '../../../account_manager/account_manager.dart';
|
import '../../../account_manager/account_manager.dart';
|
||||||
import '../../layout/layout.dart';
|
import '../../layout/layout.dart';
|
||||||
import '../../settings/settings.dart';
|
import '../../settings/settings.dart';
|
||||||
|
import '../../theme/theme.dart';
|
||||||
import '../../tools/tools.dart';
|
import '../../tools/tools.dart';
|
||||||
import '../../veilid_processor/views/developer.dart';
|
import '../../veilid_processor/views/developer.dart';
|
||||||
import '../views/router_shell.dart';
|
import '../views/router_shell.dart';
|
||||||
|
@ -105,11 +106,13 @@ class RouterCubit extends Cubit<RouterState> {
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
final extra = state.extra! as List<Object>;
|
final extra = state.extra! as List<Object>;
|
||||||
|
|
||||||
return ShowRecoveryKeyPage(
|
return PopControl(
|
||||||
writableSuperIdentity:
|
dismissible: false,
|
||||||
extra[0] as WritableSuperIdentity,
|
child: ShowRecoveryKeyPage(
|
||||||
name: extra[1] as String,
|
writableSuperIdentity:
|
||||||
isFirstAccount: extra[2] as bool);
|
extra[0] as WritableSuperIdentity,
|
||||||
|
name: extra[1] as String,
|
||||||
|
isFirstAccount: extra[2] as bool));
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
GoRoute(
|
GoRoute(
|
||||||
|
|
|
@ -2,13 +2,15 @@ import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
import '../../keyboard_shortcuts.dart';
|
import '../../keyboard_shortcuts.dart';
|
||||||
import '../../notifications/notifications.dart';
|
import '../../notifications/notifications.dart';
|
||||||
|
import '../../theme/theme.dart';
|
||||||
|
|
||||||
class RouterShell extends StatelessWidget {
|
class RouterShell extends StatelessWidget {
|
||||||
const RouterShell({required Widget child, super.key}) : _child = child;
|
const RouterShell({required Widget child, super.key}) : _child = child;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) =>
|
Widget build(BuildContext context) => PopControl(
|
||||||
NotificationsWidget(child: KeyboardShortcuts(child: _child));
|
dismissible: false,
|
||||||
|
child: NotificationsWidget(child: KeyboardShortcuts(child: _child)));
|
||||||
|
|
||||||
final Widget _child;
|
final Widget _child;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,18 +8,15 @@ class PopControl extends StatelessWidget {
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
void _doDismiss(NavigatorState navigator) {
|
void _doDismiss(BuildContext context) {
|
||||||
if (!dismissible) {
|
if (!dismissible) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
navigator.pop();
|
Navigator.of(context).pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
// ignore: prefer_expression_function_bodies
|
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final navigator = Navigator.of(context);
|
|
||||||
|
|
||||||
final route = ModalRoute.of(context);
|
final route = ModalRoute.of(context);
|
||||||
if (route != null && route is PopControlDialogRoute) {
|
if (route != null && route is PopControlDialogRoute) {
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
@ -33,7 +30,7 @@ class PopControl extends StatelessWidget {
|
||||||
if (didPop) {
|
if (didPop) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_doDismiss(navigator);
|
_doDismiss(context);
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
child: child);
|
child: child);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue