MobilApp/lib/pages/shell/presentations/views/shell_view.dart

85 lines
2.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:terepi_seged/pages/home/presentation/views/home_view.dart';
import 'package:terepi_seged/pages/map_survey/presentations/controllers/map_survey_controller.dart';
import 'package:terepi_seged/services/ntrip_service.dart';
import 'package:terepi_seged/widgets/gnss_status_chip.dart';
import '../../../../widgets/app_drawer.dart';
import '../../../map_survey/presentations/views/map_survey_view.dart';
import '../controllers/shell_controller.dart';
class ShellView extends GetView<ShellController> {
const ShellView({super.key});
static const _pages = [
HomeView(),
//MapView(),
MapSurveyView(),
//TrackingView(),
//DataView(),
];
@override
Widget build(BuildContext context) {
return Scaffold(
extendBody: true,
extendBodyBehindAppBar: false,
appBar: AppBar(
// Cím reaktívan frissül tab váltáskor
title: Obx(() => Text(controller.currentTitle)),
actions: [
const GnssStatusChip(),
const SizedBox(width: 6),
Obx(() => controller.currentIndex.value == 1
? NtripStatusChip(
isConnected: NtripService.to.isConnected,
onToggle: () {
NtripService.to.isConnected.value
? NtripService.to.disconnect()
: NtripService.to.connect();
},
)
: const SizedBox.shrink())
],
),
drawer: const AppDrawer(),
body: Obx(() => IndexedStack(
index: controller.currentIndex.value,
children: _pages,
)),
bottomNavigationBar: Obx(
() => AnimatedSize(
duration: const Duration(milliseconds: 250),
curve: Curves.easeInOut,
child: controller.isNavBarVisible.value
? NavigationBar(
selectedIndex: controller.currentIndex.value,
onDestinationSelected: controller.goToTab,
destinations: const [
NavigationDestination(
icon: Icon(Icons.map_outlined),
selectedIcon: Icon(Icons.map),
label: 'Térkép',
),
NavigationDestination(
icon: Icon(Icons.gps_fixed),
label: 'Mérés',
),
NavigationDestination(
icon: Icon(Icons.route),
label: 'Track',
),
NavigationDestination(
icon: Icon(Icons.table_chart_outlined),
selectedIcon: Icon(Icons.table_chart),
label: 'Adatok',
),
],
)
: const SizedBox.shrink()),
),
);
}
}