aman-kassa-flutter/lib/core/services/navigator_service.dart

48 lines
1.5 KiB
Dart

import '../../core/base/base_service.dart';
import 'package:flutter/material.dart';
class NavigatorService extends BaseService {
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
Future<dynamic> push(String routeName, {dynamic arguments}) {
log.i('routeName: $routeName');
return navigatorKey.currentState!
.pushNamed(routeName, arguments: arguments);
}
Future<dynamic> replace(String routeName, {dynamic arguments}) {
log.i('routeName: $routeName');
return navigatorKey.currentState!
.pushNamedAndRemoveUntil(routeName, (Route<dynamic> route) => false, arguments: arguments);
}
Future<T?> navigateToPage<T>(MaterialPageRoute<T> pageRoute) async {
log.i('navigateToPage: pageRoute: ${pageRoute.settings.name}');
if (navigatorKey.currentState == null) {
log.e('navigateToPage: Navigator State is null');
return null;
}
return navigatorKey.currentState!.push(pageRoute);
}
Future<T?> navigateToPageWithReplacement<T>(
MaterialPageRoute<T> pageRoute) async {
log.i('navigateToPageWithReplacement: '
'pageRoute: ${pageRoute.settings.name}');
if (navigatorKey.currentState == null) {
log.e('navigateToPageWithReplacement: Navigator State is null');
return null;
}
return navigatorKey.currentState!.pushReplacement(pageRoute);
}
void pop<T>([T? result]) {
log.i('goBack:');
if (navigatorKey.currentState == null) {
log.e('goBack: Navigator State is null');
return;
}
navigatorKey.currentState!.pop(result);
}
}