E32221335_DIGIPLUG/lib/core/navigation/navigator.dart

50 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
export 'route.dart';
export 'router.dart';
// Kelas abstrak untuk helper navigasi
abstract class AppNavigator {
AppNavigator._();
// Kunci global untuk mengakses state navigator
static final key = GlobalKey<NavigatorState>();
// Mendapatkan BuildContext saat ini dari navigator
static BuildContext get currentContext => key.currentState!.context;
// Memeriksa apakah bisa kembali ke halaman sebelumnya
static bool get canPop => key.currentState!.canPop();
// Kembali ke halaman pertama dalam tumpukan navigasi
static void popUntilIsFirst() {
return key.currentState!.popUntil(
(route) => route.isFirst,
);
}
// Pindah ke halaman baru menggunakan nama rute
static Future? pushNamed(String route, {arguments}) {
return key.currentState!.pushNamed(route, arguments: arguments);
}
// Pindah ke halaman baru dan mengganti halaman saat ini
static Future? pushNamedReplacement(String route, {arguments}) {
return key.currentState!.pushReplacementNamed(route, arguments: arguments);
}
// Pindah ke halaman baru dan menghapus semua halaman sebelumnya
static Future? pushNamedAndClear(String route, {arguments}) {
return key.currentState!.pushNamedAndRemoveUntil(
route,
(_) => false,
arguments: arguments,
);
}
// Kembali ke halaman sebelumnya jika memungkinkan
static void pop({result}) {
if (canPop) return key.currentState!.pop(result);
}
}