2025-08-19 11:22:34 +03:30
|
|
|
|
2025-05-21 09:04:21 +03:30
|
|
|
import 'package:flutter/material.dart';
|
2025-05-19 16:16:33 +03:30
|
|
|
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';
|
2025-05-24 15:12:40 +03:30
|
|
|
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';
|
2025-05-19 16:16:33 +03:30
|
|
|
|
|
|
|
|
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 => [
|
2025-05-24 15:12:40 +03:30
|
|
|
Navigator(
|
2025-08-25 15:44:27 +03:30
|
|
|
key: navigatorKeys[0],
|
2025-08-25 09:56:50 +03:30
|
|
|
onGenerateRoute: (settings) => GetPageRoute(page: () => MapPage()),
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
Navigator(
|
2025-08-25 15:44:27 +03:30
|
|
|
key: navigatorKeys[1],
|
2025-05-24 15:12:40 +03:30
|
|
|
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
|
|
|
|
2025-08-25 09:56:50 +03:30
|
|
|
Navigator(
|
2025-08-25 15:44:27 +03:30
|
|
|
key: navigatorKeys[2],
|
2025-08-25 09:56:50 +03:30
|
|
|
onGenerateRoute: (settings) => GetPageRoute(page: () => ProfilePage()),
|
|
|
|
|
),
|
2025-05-24 15:12:40 +03:30
|
|
|
];
|
2025-08-09 08:43:26 +03:30
|
|
|
|
2025-08-04 15:31:34 +03:30
|
|
|
RxInt currentIndex = 0.obs;
|
2025-08-19 11:22:34 +03:30
|
|
|
TokenStorageService tokenService = Get.find<TokenStorageService>();
|
2025-05-21 09:04:21 +03:30
|
|
|
|
2025-08-19 11:22:34 +03:30
|
|
|
|
2025-08-09 08:43:26 +03:30
|
|
|
|
2025-05-19 16:16:33 +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;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-19 16:16:33 +03:30
|
|
|
}
|