Files

60 lines
1.8 KiB
Dart
Raw Permalink Normal View History

2025-05-21 09:04:21 +03:30
import 'package:flutter/material.dart';
import 'package:rasadyar_core/core.dart';
2025-05-21 09:04:21 +03:30
import 'package:rasadyar_livestock/presentation/page/map/view.dart';
import 'package:rasadyar_livestock/presentation/page/profile/view.dart';
import 'package:rasadyar_livestock/presentation/page/request_tagging/view.dart';
import 'package:rasadyar_livestock/presentation/page/requests/view.dart';
import 'package:rasadyar_livestock/presentation/routes/app_pages.dart';
class RootLogic extends GetxController {
2025-08-25 15:44:27 +03:30
// Unique nested keys for each Navigator
final List<GlobalKey<NavigatorState>> navigatorKeys = [
?Get.nestedKey(0), // Map
?Get.nestedKey(1), // Requests / RequestTagging
?Get.nestedKey(2), // Profile
];
List<Widget> get pages => [
Navigator(
2025-08-25 15:44:27 +03:30
key: navigatorKeys[0],
onGenerateRoute: (settings) => GetPageRoute(page: () => MapPage()),
),
Navigator(
2025-08-25 15:44:27 +03:30
key: navigatorKeys[1],
onGenerateRoute: (settings) {
switch (settings.name) {
case LiveStockRoutes.requests:
return GetPageRoute(page: () => RequestsPage());
case LiveStockRoutes.requestTagging:
return GetPageRoute(page: () => RequestTaggingPage());
default:
return GetPageRoute(page: () => RequestsPage());
}
},
),
2025-08-03 11:55:57 +03:30
Navigator(
2025-08-25 15:44:27 +03:30
key: navigatorKeys[2],
onGenerateRoute: (settings) => GetPageRoute(page: () => ProfilePage()),
),
];
2025-08-09 08:43:26 +03:30
2025-08-04 15:31:34 +03:30
RxInt currentIndex = 0.obs;
TokenStorageService tokenService = Get.find<TokenStorageService>();
2025-05-21 09:04:21 +03:30
2025-08-09 08:43:26 +03:30
2025-05-21 14:43:26 +03:30
2025-08-25 15:44:27 +03:30
void changePage(int index) {
if (index == currentIndex.value) {
// Optional: pop to first route if the same tab is tapped
navigatorKeys[index].currentState?.popUntil((route) => route.isFirst);
} else {
currentIndex.value = index;
}
}
}