import 'package:flutter/material.dart'; import 'package:rasadyar_core/core.dart'; import 'package:rasadyar_core/data/utils.dart'; import 'logic.dart'; class RootPage extends GetView { const RootPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Stack( children: [ ObxValue((errorType) { if (errorType.isNotEmpty) { if (errorType.contains(ErrorLocationType.serviceDisabled)) { Future.microtask(() { Get.defaultDialog( title: 'خطا', content: const Text('سرویس مکان‌یابی غیرفعال است'), cancel: ROutlinedElevated( text: 'بررسی مجدد', width: 120, textStyle: AppFonts.yekan16, onPressed: () async { var service = await controller.locationServiceEnabled(); eLog(service); if (service) { controller.errorLocationType.remove( ErrorLocationType.serviceDisabled, ); Get.back(); } // Don't call Get.back() if service is still disabled }, ), confirm: RElevated( text: 'روشن کردن', textStyle: AppFonts.yekan16, width: 120, onPressed: () async { var res = await Geolocator.openLocationSettings(); if (res) { var service = await controller.locationServiceEnabled(); if (service) { controller.errorLocationType.remove( ErrorLocationType.serviceDisabled, ); Get.back(); } } }, ), contentPadding: EdgeInsets.all(8), onWillPop: () async { return controller.errorLocationType.isEmpty; }, barrierDismissible: false, ); }); } else { Future.microtask(() { Get.defaultDialog( title: 'خطا', content: const Text( ' دسترسی به سرویس مکان‌یابی غیرفعال است', ), cancel: ROutlinedElevated( text: 'بررسی مجدد', width: 120, textStyle: AppFonts.yekan16, onPressed: () async { await controller.checkPermission(); }, ), confirm: RElevated( text: 'اجازه دادن', textStyle: AppFonts.yekan16, width: 120, onPressed: () async { var res = await controller.checkPermission( request: true, ); if (res) { controller.errorLocationType.remove( ErrorLocationType.permissionDenied, ); Get.back(); } }, ), contentPadding: EdgeInsets.all(8), onWillPop: () async { return controller.errorLocationType.isEmpty; }, barrierDismissible: false, ); }); } } return const SizedBox.shrink(); }, controller.errorLocationType), ObxValue( (currentIndex) => IndexedStack( index: currentIndex.value, children: controller.pages, ), controller.currentIndex, ), Align( alignment: Alignment.bottomCenter, child: WaveBottomNavigation( items: [ WaveBottomNavigationItem(title: 'خانه', icon: Assets.vecMapSvg), WaveBottomNavigationItem( title: 'عملیات', icon: Assets.vecUserSvg, ), WaveBottomNavigationItem( title: 'افزودن', icon: Assets.vecAddSvg, ), WaveBottomNavigationItem( title: 'آمار', icon: Assets.vecDiagramSvg, ), WaveBottomNavigationItem( title: 'تماس', icon: Assets.vecCallSvg, ), WaveBottomNavigationItem( title: 'مکان ', icon: Assets.vecGpsSvg, ), WaveBottomNavigationItem( title: 'تاریخ', icon: Assets.vecCalendarSvg, ), ], onPageChanged: (index) { controller.changePage(index); }, ), ), ], ), ); } }