import 'package:flutter/material.dart';
final GlobalKey<NavigatorState> globalNavKey = GlobalKey<NavigatorState>();
class CustomRoute {
static final CustomRoute _route = CustomRoute._internal();
factory CustomRoute() {
return _route;
}
CustomRoute._internal();
static keyPush(page) async =>
await globalNavKey.currentState?.push(MaterialPageRoute(
builder: (context) => page,
));
static keyPushRemove(page) async =>
await globalNavKey.currentState?.pushAndRemoveUntil(
MaterialPageRoute(
builder: (context) => page,
),
(route) => false);
static keyPushReplac(page) async =>
await globalNavKey.currentState?.pushReplacement(MaterialPageRoute(
builder: (context) => page,
));
static keyPushNamed(String page) async =>
await globalNavKey.currentState?.pushNamed(page);
static keyPushNamedRemove(String page) async =>
await globalNavKey.currentState
?.pushNamedAndRemoveUntil(page, (route) => false);
Future<dynamic> pushRemove({required BuildContext context, required page}) {
return Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => page,
),
(route) => false);
}
Future<dynamic> push({required BuildContext context, required page}) {
return Navigator.push(
context,
MaterialPageRoute(
builder: (context) => page,
));
}
Future<dynamic> pushNamed(
{required BuildContext context, required String routeName}) {
return Navigator.pushNamed(context, routeName);
}
Future<dynamic> pushNameRemove(
{required BuildContext context, required String newRouteName}) {
return Navigator.pushNamedAndRemoveUntil(
context, newRouteName, (route) => false);
}
Future<dynamic> pushReplacement(
{required BuildContext context, required page}) {
return Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => page,
));
}
}