Merge branch 'pop-control' into 'main'

Keep android back button from exiting app

Closes #32

See merge request veilid/veilidchat!48
This commit is contained in:
Christien Rioux 2025-04-09 18:40:20 -04:00
commit c077a0290f
3 changed files with 15 additions and 13 deletions

View File

@ -12,6 +12,7 @@ import 'package:veilid_support/veilid_support.dart';
import '../../../account_manager/account_manager.dart';
import '../../layout/layout.dart';
import '../../settings/settings.dart';
import '../../theme/theme.dart';
import '../../tools/tools.dart';
import '../../veilid_processor/views/developer.dart';
import '../views/router_shell.dart';
@ -105,11 +106,13 @@ class RouterCubit extends Cubit<RouterState> {
builder: (context, state) {
final extra = state.extra! as List<Object>;
return ShowRecoveryKeyPage(
writableSuperIdentity:
extra[0] as WritableSuperIdentity,
name: extra[1] as String,
isFirstAccount: extra[2] as bool);
return PopControl(
dismissible: false,
child: ShowRecoveryKeyPage(
writableSuperIdentity:
extra[0] as WritableSuperIdentity,
name: extra[1] as String,
isFirstAccount: extra[2] as bool));
}),
]),
GoRoute(

View File

@ -2,13 +2,15 @@ import 'package:flutter/widgets.dart';
import '../../keyboard_shortcuts.dart';
import '../../notifications/notifications.dart';
import '../../theme/theme.dart';
class RouterShell extends StatelessWidget {
const RouterShell({required Widget child, super.key}) : _child = child;
@override
Widget build(BuildContext context) =>
NotificationsWidget(child: KeyboardShortcuts(child: _child));
Widget build(BuildContext context) => PopControl(
dismissible: false,
child: NotificationsWidget(child: KeyboardShortcuts(child: _child)));
final Widget _child;
}

View File

@ -8,18 +8,15 @@ class PopControl extends StatelessWidget {
super.key,
});
void _doDismiss(NavigatorState navigator) {
void _doDismiss(BuildContext context) {
if (!dismissible) {
return;
}
navigator.pop();
Navigator.of(context).pop();
}
@override
// ignore: prefer_expression_function_bodies
Widget build(BuildContext context) {
final navigator = Navigator.of(context);
final route = ModalRoute.of(context);
if (route != null && route is PopControlDialogRoute) {
WidgetsBinding.instance.addPostFrameCallback((_) {
@ -33,7 +30,7 @@ class PopControl extends StatelessWidget {
if (didPop) {
return;
}
_doDismiss(navigator);
_doDismiss(context);
return;
},
child: child);