48 lines
1.5 KiB
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);
|
|
}
|
|
} |