diff --git a/lib/features/weather/weather_view_model.dart b/lib/features/weather/weather_view_model.dart index 874630d2..32b97753 100644 --- a/lib/features/weather/weather_view_model.dart +++ b/lib/features/weather/weather_view_model.dart @@ -1,9 +1,15 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/location_util.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/features/weather/models/waether_cities_model.dart'; import 'package:hmg_patient_app_new/features/weather/weather_repo.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:permission_handler/permission_handler.dart' show openAppSettings; import '../../core/app_state.dart' show AppState; @@ -24,8 +30,30 @@ class WeatherMonitorViewModel extends ChangeNotifier { isLoading = true; notifyListeners(); _cityInfoList.clear(); + locationUtils.isShowConfirmDialog = true; locationUtils.getLocation( isShowConfirmDialog: true, + onFailure: (){ + isLoading = false; + notifyListeners(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(), + getIt.get().navigatorKey.currentContext!, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.grantLocationPermission.tr(), + isShowActionButtons: true, + onCancelTap: () { + getIt.get().pop(); + }, + onConfirmTap: () async { + getIt.get().pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, onSuccess: (position) async { isLocationAvailable = true; final result = await weatherRepo.getCityInfo(); diff --git a/lib/presentation/hmg_services/widgets/weather_widget.dart b/lib/presentation/hmg_services/widgets/weather_widget.dart index b54ab78e..ca365111 100644 --- a/lib/presentation/hmg_services/widgets/weather_widget.dart +++ b/lib/presentation/hmg_services/widgets/weather_widget.dart @@ -44,12 +44,13 @@ class WeatherWidget extends StatelessWidget { return Selector cityInfoList})>( selector: (_, vm) => (isLoading: vm.isLoading, isLocationAvailable: vm.isLocationAvailable, cityInfoList: vm.cityInfoList), builder: (context, state, child) { - if (state.isLoading) { - return _buildLoadingState().paddingSymmetrical(24.w, 0.w); - } if (!state.isLocationAvailable) { return noWeatherWidget(context).paddingSymmetrical(24.w, 0.w); } + if (state.isLoading) { + return _buildLoadingState().paddingSymmetrical(24.w, 0.w); + } + final currentCity = state.cityInfoList.isNotEmpty ? state.cityInfoList.first : null; final now = DateTime.now();