Files
sendico/frontend/pweb/lib/app/router/pages.dart
2025-11-13 15:06:15 +03:00

60 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
enum Pages {
root,
sfactor,
login,
methods,
verify,
signup,
settings,
dashboard,
profile,
recipients,
users,
roles,
permissions,
invitations,
}
String routerPath(String page) {
return '/$page';
}
String routerPage(Pages page) {
return page == Pages.root ? '/' : routerPath(page.name);
}
String _pagePath(Pages page, {String? objectRef}) => _pagesPath([page], objectRef: objectRef);
String _pagesPath(List<Pages> pages, {String? objectRef}) {
final path = pages.map(routerPage).join();
return objectRef != null ? '$path/$objectRef' : path;
}
void navigateAndReplace(BuildContext context, Pages page, {String? objectRef, Object? extra}) {
context.go(_pagePath(page, objectRef: objectRef), extra: extra);
}
void navigate(BuildContext context, Pages page, {String? objectRef, Object? extra}) {
navigatePages(context, [page], objectRef: objectRef, extra: extra);
}
void navigatePages(BuildContext context, List<Pages> pages, {String? objectRef, Object? extra}) {
context.push(_pagesPath(pages, objectRef: objectRef), extra: extra);
}
void navigateNamed(BuildContext context, Pages page, {String? objectRef, Object? extra}) {
context.pushNamed(page.name, extra: extra);
}
void navigateNamedAndReplace(BuildContext context, Pages page, {String? objectRef, Object? extra}) {
context.replaceNamed(page.name, extra: extra);
}
void navigateNext(BuildContext context, Pages page, {Object? extra}) {
WidgetsBinding.instance.addPostFrameCallback((_) => navigate(context, page, extra: extra));
}