diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 31e27dc..bbb2e66 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -47,6 +47,7 @@ class ApiConsts { static String ServiceProviderService_Create = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Create"; static String ServiceProviderService_Update = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Update"; static String GetProviderServices = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Get"; + static String setScheduleInactive = "${baseUrlServices}api/ServiceProviders/BranchAppointmentSchedule_IsActiveUpdate"; static String ServiceProviderService_Get = "${baseUrlServices}api/ServiceProviders/ServiceProviderService_Get"; static String BranchesAndServices = "${baseUrlServices}api/ServiceProviders/ServiceProviderDetail_Get"; diff --git a/lib/models/advertisment_models/ads_duration_model.dart b/lib/models/advertisment_models/ads_duration_model.dart index 68d0703..aaf3b5c 100644 --- a/lib/models/advertisment_models/ads_duration_model.dart +++ b/lib/models/advertisment_models/ads_duration_model.dart @@ -6,15 +6,9 @@ class AdsDurationModel { int? countryID; bool? isActive; String? countryName; + bool? isSelected; - AdsDurationModel( - {this.id, - this.name, - this.days, - this.price, - this.countryID, - this.isActive, - this.countryName}); + AdsDurationModel({this.id, this.name, this.days, this.price, this.countryID, this.isActive, this.countryName, this.isSelected}); AdsDurationModel.fromJson(Map json) { id = json['id']; @@ -24,6 +18,7 @@ class AdsDurationModel { countryID = json['countryID']; isActive = json['isActive']; countryName = json['countryName']; + isSelected = false; } Map toJson() { diff --git a/lib/models/advertisment_models/vehicle_details_models.dart b/lib/models/advertisment_models/vehicle_details_models.dart index 10779c7..bcbd8ba 100644 --- a/lib/models/advertisment_models/vehicle_details_models.dart +++ b/lib/models/advertisment_models/vehicle_details_models.dart @@ -60,6 +60,7 @@ class VehicleTypeModel { String? vehicleTypeNameN; bool? isActive; VehicleType? vehicleTypeEnum; + bool? isSelected; VehicleTypeModel({ this.id, @@ -67,6 +68,8 @@ class VehicleTypeModel { this.vehicleTypeNameN, this.isActive, this.vehicleTypeEnum = VehicleType.car, + this.isSelected, + }); VehicleTypeModel.fromJson(Map json) { @@ -75,6 +78,7 @@ class VehicleTypeModel { vehicleTypeNameN = json['vehicleTypeNameN']; isActive = json['isActive']; vehicleTypeEnum = (json['id'] as int).toVehicleTypeEnum(); + isSelected = false; } Map toJson() { @@ -450,8 +454,9 @@ class VehicleBrandsModel { String? vehicleBrandDescription; String? vehicleBrandDescriptionN; bool? isActive; + bool? isSelected; - VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive}); + VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive, this.isSelected}); VehicleBrandsModel.fromJson(Map json) { id = json['id']; @@ -460,6 +465,7 @@ class VehicleBrandsModel { vehicleBrandDescription = json['vehicleBrand_Description']; vehicleBrandDescriptionN = json['vehicleBrand_DescriptionN']; isActive = json['isActive']; + isSelected = false; } Map toJson() { diff --git a/lib/models/appointments_models/schedule_model.dart b/lib/models/appointments_models/schedule_model.dart index 2f65cd2..9c0f829 100644 --- a/lib/models/appointments_models/schedule_model.dart +++ b/lib/models/appointments_models/schedule_model.dart @@ -58,6 +58,7 @@ class ScheduleData { final List? scheduleServices; final List? selectedServices; String branchId; + int? appointmentType; ScheduleData({ this.id, @@ -77,6 +78,7 @@ class ScheduleData { this.scheduleServices, this.selectedServices, this.branchId = "", + this.appointmentType }); factory ScheduleData.fromJson(Map json) => @@ -94,6 +96,7 @@ class ScheduleData { address: json["address"], latitude: json["latitude"], longitude: json["longitude"], + appointmentType: json["appointmentType"] == null ? null : json["appointmentType"], weeklyOffDays: json["weeklyOffDays"] == null ? [] : List.from(json["weeklyOffDays"]!.map((x) => WeeklyOffDay.fromJson(x))), scheduleServices: json["scheduleServices"] == null ? [] : List.from(json["scheduleServices"]!.map((x) => ServiceModel.fromJson(x))), selectedServices: [], @@ -114,6 +117,7 @@ class ScheduleData { "address": address, "latitude": latitude, "longitude": longitude, + "appointmentType": appointmentType, "scheduleServices": scheduleServices == null ? [] : List.from(scheduleServices!.map((x) => x.toJson())), }; diff --git a/lib/models/provider_branches_models/profile/services.dart b/lib/models/provider_branches_models/profile/services.dart index f45abcb..f007aa3 100644 --- a/lib/models/provider_branches_models/profile/services.dart +++ b/lib/models/provider_branches_models/profile/services.dart @@ -55,7 +55,7 @@ class ServicesData { String? descriptionN; dynamic? serviceIconUrl; dynamic? serviceImageUrl; - int? serviceCategoryId; + dynamic? serviceCategoryId; dynamic? categoryName; bool? isSelected; diff --git a/lib/repositories/branch_repo.dart b/lib/repositories/branch_repo.dart index 46ad07a..5de2eee 100644 --- a/lib/repositories/branch_repo.dart +++ b/lib/repositories/branch_repo.dart @@ -111,9 +111,9 @@ class BranchRepoImp implements BranchRepo { @override Future fetchServicesByCategoryId({required int serviceCategoryId}) async { - var postParams = {"ServiceCategoryID": serviceCategoryId}; + var postParams = {"ServiceCategoryID": serviceCategoryId.toString()}; String t = AppState().getUser.data!.accessToken ?? ""; - return await apiClient.getJsonForObject((json) => Services.fromJson(json), ApiConsts.Services_Get, queryParameters: serviceCategoryId != -1 ? postParams : null, token: t); + return await apiClient.getJsonForObject((json) => Services.fromJson(json), ApiConsts.Services_Get, queryParameters: serviceCategoryId.toString() != "-1" ? postParams : null, token: t); } @override diff --git a/lib/repositories/schedule_repo.dart b/lib/repositories/schedule_repo.dart index e906cda..59b0629 100644 --- a/lib/repositories/schedule_repo.dart +++ b/lib/repositories/schedule_repo.dart @@ -18,6 +18,8 @@ abstract class ScheduleRepo { Future getSchedules(String branchId); Future updateServicesInSchedule(Map map); + + Future setScheduleInActive(int scheduleId, int branchId); } class ScheduleRepoImp implements ScheduleRepo { @@ -47,6 +49,17 @@ class ScheduleRepoImp implements ScheduleRepo { return await injector.get().getJsonForObject((json) => Schedule.fromJson(json), ApiConsts.getSchedule, token: t, queryParameters: map); } + @override + Future setScheduleInActive(int scheduleId, int branchId) async { + Map map = { + "id": scheduleId, + "serviceProviderBranchID": branchId, + "isActive": false, + }; + String t = AppState().getUser.data!.accessToken ?? ""; + return injector.get().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.setScheduleInactive, token: t, map); + } + @override Future updateSchedule(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; diff --git a/lib/services/common_auth_service.dart b/lib/services/common_auth_service.dart index c3edc37..1daeec0 100644 --- a/lib/services/common_auth_service.dart +++ b/lib/services/common_auth_service.dart @@ -1,7 +1,12 @@ +import 'dart:io'; + +import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/services.dart'; +import 'package:huawei_fido/huawei_fido.dart'; import 'package:local_auth/local_auth.dart'; import 'package:local_auth_android/local_auth_android.dart'; -import 'package:local_auth_ios/local_auth_ios.dart'; +import 'package:local_auth_darwin/types/auth_messages_ios.dart'; +import 'package:mc_common_app/main.dart'; abstract class CommonAuthServices { Future authenticate(); @@ -51,6 +56,14 @@ class CommonAuthImp implements CommonAuthServices { } Future> getAvailBio() async { - return await localAuth.getAvailableBiometrics(); + return await localAuth.getAvailableBiometrics(); + } + + Future getHuaweiAuth() async { + DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); + AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; + // if (androidInfo.brand == "HUAWEI") { + // huawei.canAuth(); + // } } } diff --git a/lib/utils/app_permission_handler.dart b/lib/utils/app_permission_handler.dart index 0d8bfd5..b9e2e87 100644 --- a/lib/utils/app_permission_handler.dart +++ b/lib/utils/app_permission_handler.dart @@ -1,4 +1,5 @@ import 'dart:developer'; +import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/material.dart'; @@ -66,16 +67,22 @@ class AppPermissions { message: "You need to give storage permission to select files.", onTap: () { Navigator.pop(context); + openAppSettings(); }, ), ); } + Future getAndroidDeviceInfo() async { + AndroidDeviceInfo deviceInfo = await DeviceInfoPlugin().androidInfo; + return deviceInfo.version.sdkInt; + } + static Future checkStoragePermissions(BuildContext context) async { bool permissionStatus; final deviceInfo = await DeviceInfoPlugin().androidInfo; - if (deviceInfo.version.sdkInt! > 32) { + if (deviceInfo.version.sdkInt > 32) { permissionStatus = await Permission.photos.request().isGranted; if (permissionStatus) { return true; @@ -89,7 +96,6 @@ class AppPermissions { return true; } else { getDialog(context); - return false; } } diff --git a/lib/view_models/ad_view_model.dart b/lib/view_models/ad_view_model.dart index 0f5e3c2..7973bad 100644 --- a/lib/view_models/ad_view_model.dart +++ b/lib/view_models/ad_view_model.dart @@ -6,6 +6,7 @@ import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; +import 'package:mc_common_app/main.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/ads_bank_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/ads_duration_model.dart'; @@ -69,6 +70,9 @@ class AdVM extends BaseVM { String adReservePriceError = ""; String adPhoneNumberError = ""; + // Edit Variables Amir + bool isAdEdit = false; + List exploreAds = []; List exploreAdsFilteredList = []; List myAdsFilteredList = []; @@ -1593,8 +1597,83 @@ class AdVM extends BaseVM { applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds); setState(ViewState.idle); } + +///// Edit Work Amir + + void editUpdateAd(BuildContext context, AdDetailsModel previousDetails) { + isAdEdit = true; + navigateWithName(context, AppRoutes.selectAdTypeView, arguments: AppState().currentAppType == AppType.provider ? true : false); + checkVehicleStep1(previousDetails); + checkVehicleStep2(previousDetails); + + } + + void clearEditValues() { + isAdEdit = false; + if (vehicleTypes.isNotEmpty) vehicleTypes.unselectAll(); + if (vehicleAdsDurations.isNotEmpty) vehicleAdsDurations.unselectAll(); + } + + checkVehicleStep1(AdDetailsModel previousDetails) { + logger.d("Step 1"); + if (vehicleTypes.isNotEmpty) { + for (var vehicle in vehicleTypes) { + if (vehicle.id == previousDetails.vehicle?.vehicleType) { + vehicle.isSelected = true; + break; + } + } + } + notifyListeners(); + } + + checkVehicleStep2(AdDetailsModel previousDetails) { + logger.d("Step 2"); + if (vehicleAdsDurations.isNotEmpty) { + for (var adsDuration in vehicleAdsDurations) { + if (adsDuration.price == previousDetails.adsDurationPrice) { + adsDuration.isSelected = true; + break; + } + } + } + notifyListeners(); + } + checkVehicleStep3(AdDetailsModel previousDetails) { + logger.d("Step 3"); + if (vehicleBrands.isNotEmpty) { + for (var vBrands in vehicleBrands) { + if (vBrands.id == previousDetails.vehicle.) { + // BrandsId need to be matched here. + vBrands.isSelected = true; + break; + } + } + } + notifyListeners(); + } + + updateValues() { + if (isAdEdit) { + if (vehicleTypes.isNotEmpty) vehicleTypes.unselectAll(); + if (vehicleAdsDurations.isNotEmpty) vehicleAdsDurations.unselectAll(); + notifyListeners(); + } + } +} + +extension ToggleSelected on List { + void unselectAll() { + for (var element in this) { + if (element.isSelected!) { + element.isSelected = false; + } + } + } } +// Edit Work End Amir + class VehicleDamageCard { List? partImages; SelectionModel? partSelectedId; diff --git a/lib/view_models/user_view_model.dart b/lib/view_models/user_view_model.dart index 09c5068..8df39d9 100644 --- a/lib/view_models/user_view_model.dart +++ b/lib/view_models/user_view_model.dart @@ -1,9 +1,11 @@ import 'dart:convert'; +import 'package:device_info_plus/device_info_plus.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; +import 'package:huawei_fido/huawei_fido.dart'; import 'package:local_auth/local_auth.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -331,51 +333,92 @@ class UserVM extends BaseVM { } } - Future performBasicOtpLoginSelectionPage(BuildContext context, {required String userToken, required AppType appType}) async { - Utils.showLoading(context); - LoginPasswordRespModel user = await userRepo.loginV2OTP(userToken, "1"); - Utils.hideLoading(context); - if (user.messageStatus == 1) { - showMDialog(context, child: OtpDialog( - onClick: (String code) async { - pop(context); - Utils.showLoading(context); - Response response2 = await userRepo.loginV2OTPVerify(user.data!.userToken ?? "", code); - Utils.hideLoading(context); - RegisterUserRespModel verifiedUser = RegisterUserRespModel.fromJson(jsonDecode(response2.body)); - if (verifiedUser.messageStatus == 1) { - User user = User.fromJson(jsonDecode(response2.body)); - if (appType == AppType.provider) { - if (user.data!.userInfo!.roleId == 5 || user.data!.userInfo!.roleId == 6) { - AppState().setUser = user; - SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); - SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); - SharedPrefManager.setRefreshToken(user.data!.refreshToken ?? ""); - SharedPrefManager.setData(jsonEncode(user.data!.userInfo!.toJson())); - navigateReplaceWithName(context, AppRoutes.dashboard); - } else { - Utils.showToast("LocaleKeys.onlyProviderApp.tr()"); - //("Sorry, Only Customer's can log in this app"); - } - } else if (user.data!.userInfo!.roleId == 4) { - if (user.data!.userInfo!.roleId == 4) { - AppState().setUser = user; - SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); - SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); - SharedPrefManager.setRefreshToken(user.data!.refreshToken ?? ""); - SharedPrefManager.setData(jsonEncode(user.data!.userInfo!.toJson())); - navigateReplaceWithName(context, AppRoutes.dashboard); - } else { - Utils.showToast("Sorry, Only Customer's can log in this app"); - } + Future performBasicOtpLoginSelectionPage(BuildContext context, {required String userToken, required AppType appType, String? loginType}) async { + if (loginType == "3" || loginType == "4") { + Utils.showLoading(context); + LoginPasswordRespModel user = await userRepo.loginV2OTP(userToken, loginType!); + Utils.hideLoading(context); + if (user.messageStatus == 1) { + Utils.showLoading(context); + Response response2 = await userRepo.loginV2OTPVerify(user.data!.userToken ?? "", "9999"); + Utils.hideLoading(context); + RegisterUserRespModel verifiedUser = RegisterUserRespModel.fromJson(jsonDecode(response2.body)); + if (verifiedUser.messageStatus == 1) { + User user = User.fromJson(jsonDecode(response2.body)); + if (appType == AppType.provider) { + if (user.data!.userInfo!.roleId == 5 || user.data!.userInfo!.roleId == 6) { + AppState().setUser = user; + SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); + SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); + SharedPrefManager.setRefreshToken(user.data!.refreshToken ?? ""); + SharedPrefManager.setData(jsonEncode(user.data!.userInfo!.toJson())); + navigateReplaceWithName(context, AppRoutes.dashboard); + } else { + Utils.showToast("LocaleKeys.onlyProviderApp.tr()"); + //("Sorry, Only Customer's can log in this app"); + } + } else if (user.data!.userInfo!.roleId == 4) { + if (user.data!.userInfo!.roleId == 4) { + AppState().setUser = user; + SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); + SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); + SharedPrefManager.setRefreshToken(user.data!.refreshToken ?? ""); + SharedPrefManager.setData(jsonEncode(user.data!.userInfo!.toJson())); + navigateReplaceWithName(context, AppRoutes.dashboard); + } else { + Utils.showToast("Sorry, Only Customer's can log in this app"); } - } else { - Utils.showToast(verifiedUser.message ?? ""); } - }, - )); + } else { + Utils.showToast(verifiedUser.message ?? ""); + } + } } else { - Utils.showToast(user.message ?? ""); + Utils.showLoading(context); + LoginPasswordRespModel user = await userRepo.loginV2OTP(userToken, "1"); + Utils.hideLoading(context); + if (user.messageStatus == 1) { + showMDialog(context, child: OtpDialog( + onClick: (String code) async { + pop(context); + Utils.showLoading(context); + Response response2 = await userRepo.loginV2OTPVerify(user.data!.userToken ?? "", code); + Utils.hideLoading(context); + RegisterUserRespModel verifiedUser = RegisterUserRespModel.fromJson(jsonDecode(response2.body)); + if (verifiedUser.messageStatus == 1) { + User user = User.fromJson(jsonDecode(response2.body)); + if (appType == AppType.provider) { + if (user.data!.userInfo!.roleId == 5 || user.data!.userInfo!.roleId == 6) { + AppState().setUser = user; + SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); + SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); + SharedPrefManager.setRefreshToken(user.data!.refreshToken ?? ""); + SharedPrefManager.setData(jsonEncode(user.data!.userInfo!.toJson())); + navigateReplaceWithName(context, AppRoutes.dashboard); + } else { + Utils.showToast("LocaleKeys.onlyProviderApp.tr()"); + //("Sorry, Only Customer's can log in this app"); + } + } else if (user.data!.userInfo!.roleId == 4) { + if (user.data!.userInfo!.roleId == 4) { + AppState().setUser = user; + SharedPrefManager.setUserToken(user.data!.accessToken ?? ""); + SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); + SharedPrefManager.setRefreshToken(user.data!.refreshToken ?? ""); + SharedPrefManager.setData(jsonEncode(user.data!.userInfo!.toJson())); + navigateReplaceWithName(context, AppRoutes.dashboard); + } else { + Utils.showToast("Sorry, Only Customer's can log in this app"); + } + } + } else { + Utils.showToast(verifiedUser.message ?? ""); + } + }, + )); + } else { + Utils.showToast(user.message ?? ""); + } } } @@ -515,10 +558,15 @@ class UserVM extends BaseVM { // Aamir Code List? availBio; - Future verifiyAuth({BuildContext? context, String? userToken, AppType? apptype}) async { + Future verifiyAuth({ + BuildContext? context, + String? userToken, + AppType? apptype, + String? loginType, + }) async { bool auth = await CommonAuthImp().authenticate(); if (auth) { - performBasicOtpLoginSelectionPage(context!, userToken: userToken!, appType: apptype!); + performBasicOtpLoginSelectionPage(context!, userToken: userToken!, appType: apptype!, loginType: loginType); } } @@ -527,7 +575,6 @@ class UserVM extends BaseVM { } bool isBioAvailable(BiometricType bioType) { - logger.d(availBio); if (availBio == null) return true; if (availBio!.contains(bioType)) { return false; diff --git a/lib/views/advertisement/ad_duration_selection_sheet_content.dart b/lib/views/advertisement/ad_duration_selection_sheet_content.dart index c0758f6..01af7e8 100644 --- a/lib/views/advertisement/ad_duration_selection_sheet_content.dart +++ b/lib/views/advertisement/ad_duration_selection_sheet_content.dart @@ -70,7 +70,14 @@ class AdDurationSelectionSheetContent extends StatelessWidget { ), ), ], - ).toWhiteContainer(width: double.infinity, allPading: 12, isBorderRequired: adDuration.id == adVM.vehicleAdDurationId.selectedId ? true : false), + ).toWhiteContainer( + width: double.infinity, + allPading: 12, + isBorderRequired: adDuration.isSelected! + ? true + : adDuration.id == adVM.vehicleAdDurationId.selectedId + ? true + : false), ).onPress(() { if (isFromExtendAd) { adVM.updateVehicleExtendAdDurationId( @@ -89,6 +96,7 @@ class AdDurationSelectionSheetContent extends StatelessWidget { itemPrice: adDuration.price!.toInt().toString(), ), ); + adVM.updateValues(); }); }, separatorBuilder: (BuildContext context, int index) { diff --git a/lib/views/advertisement/ads_detail_view.dart b/lib/views/advertisement/ads_detail_view.dart index e6ae005..b5e1b71 100644 --- a/lib/views/advertisement/ads_detail_view.dart +++ b/lib/views/advertisement/ads_detail_view.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'dart:developer'; import 'package:flutter/material.dart'; @@ -6,6 +7,7 @@ import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; +import 'package:mc_common_app/main.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/ads_bank_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/special_service_model.dart'; @@ -31,6 +33,7 @@ import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:provider/provider.dart'; +import 'package:sizer/sizer.dart'; class AdsDetailView extends StatefulWidget { final AdDetailsModel adDetails; @@ -90,9 +93,14 @@ class _AdsDetailViewState extends State { ); } + void editAd() { + AdVM adVM = context.read(); + adVM.editUpdateAd(context, widget.adDetails); + } + @override Widget build(BuildContext context) { - log("ad: ${widget.adDetails.id}"); + log("ad: ${widget.adDetails.vehicle!.image!.first.imageUrl}"); return Scaffold( appBar: CustomAppBar( title: "Ads", @@ -130,6 +138,7 @@ class _AdsDetailViewState extends State { children: [ Expanded( child: ListView( + shrinkWrap: true, children: [ Column( mainAxisSize: MainAxisSize.min, @@ -258,7 +267,44 @@ class _AdsDetailViewState extends State { ).toWhiteContainer(width: double.infinity, allPading: 12); } return const SizedBox.shrink(); - }) + }), + 12.height, + if (widget.adDetails.adPostStatus == AdPostStatus.rejected) + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "Rejection Comments".toText(fontSize: 18, isBold: true, color: MyColors.lightTextColor), + Row( + children: [ + Icon( + Icons.edit, + size: 15, + ), + 2.width, + "Edit Add".toText(fontSize: 10, isBold: true), + ], + ).onPress(() { + logger.i(widget.adDetails); + editAd(); + }), + ], + ).paddingOnly(bottom: 5), + Row( + children: [ + (widget.adDetails.comment ?? "").toText( + color: MyColors.redColor, + fontSize: 12, + isItalic: true, + ), + ], + ), + ], + ).toWhiteContainer(width: double.infinity, allPading: 12), ], ), ), @@ -1201,6 +1247,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget { case AdPostStatus.buyingService: case AdPostStatus.reserveCancel: case AdPostStatus.rejected: + return pendingForReviewAction(pendingText: "Rejected form admin"); case AdPostStatus.cancelled: case AdPostStatus.pendingForPost: return pendingForReviewAction(pendingText: "Waiting for admin to post"); diff --git a/lib/views/advertisement/create_ad_view.dart b/lib/views/advertisement/create_ad_view.dart index 195d438..d0ca883 100644 --- a/lib/views/advertisement/create_ad_view.dart +++ b/lib/views/advertisement/create_ad_view.dart @@ -34,7 +34,7 @@ class _CreateAdViewState extends State { Widget build(BuildContext context) { return Scaffold( appBar: CustomAppBar( - title: "Create Ad", + title: adVM.isAdEdit ? "Update Ad": "Create Ad", isRemoveBackButton: false, isDrawerEnabled: false, onBackButtonTapped: () => adVM.onBackButtonPressed(context), diff --git a/lib/views/advertisement/select_ad_type_view.dart b/lib/views/advertisement/select_ad_type_view.dart index d8acbf9..651f19d 100644 --- a/lib/views/advertisement/select_ad_type_view.dart +++ b/lib/views/advertisement/select_ad_type_view.dart @@ -3,6 +3,7 @@ import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; +import 'package:mc_common_app/main.dart'; import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart'; import 'package:mc_common_app/models/general_models/widgets_models.dart'; import 'package:mc_common_app/theme/colors.dart'; @@ -38,128 +39,154 @@ class SelectAdTypeView extends StatelessWidget { } } + // bool checkSelection(VehicleTypeModel vtype, AdVM adVM) { + // bool value = false; + // if (adVM.vehicleTypes.isNotEmpty) { + // for (var vehicle in adVM.vehicleTypes) { + // if (vtype.id == adVM.previousADDetails?.vehicle?.vehicleType) { + // value = true; + // break; + // } + // } + // } + // return value; + // } + // + // clearAll(BuildContext context) { + // AdVM adVM = context.read(); + // adVM.clearEditValues(); + // } + @override Widget build(BuildContext context) { - return Scaffold( - appBar: CustomAppBar( - title: "Select Ad Type", - profileImageUrl: MyAssets.bnCar, - isRemoveBackButton: false, - isDrawerEnabled: false, - ), - body: Column( - children: [ - Expanded( - child: Consumer(builder: (BuildContext context, AdVM adVM, Widget? child) { - return ListView.separated( - itemCount: adVM.vehicleTypes.length, - itemBuilder: (BuildContext context, int index) { - VehicleTypeModel vehicleTypeModel = adVM.vehicleTypes[index]; - return InkWell( - onTap: () { - adVM.updateSelectionVehicleTypeId( - SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: vehicleTypeModel.vehicleTypeName ?? "", errorValue: ""), - ); - - showMyBottomSheet(context, child: const AdDurationSelectionSheetContent(isUpdateAdSelected: false, isFromExtendAd: false)); - }, - child: SizedBox( - width: double.infinity, - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18, isBold: true), - getVehicleAdTypeIcon(vehicleTypeModel.vehicleTypeEnum!), - ], - ), - if (isProvider) ...[ - Row( - children: [ - "Duration: ".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), - "Valid Until Subscription Expiration".toText(fontSize: 13, isBold: true), - ], - ).paddingOnly(top: 5, bottom: 5), - ] else ...[ + return WillPopScope( + onWillPop: () async { + logger.d("Clead All Values"); + // clearAll(context); + AdVM adVM = context.read(); + adVM.clearEditValues(); + return true; + }, + child: Scaffold( + appBar: CustomAppBar( + title: "Select Ad Type", + profileImageUrl: MyAssets.bnCar, + isRemoveBackButton: false, + isDrawerEnabled: false, + ), + body: Column( + children: [ + Expanded( + child: Consumer(builder: (BuildContext context, AdVM adVM, Widget? child) { + return ListView.separated( + itemCount: adVM.vehicleTypes.length, + itemBuilder: (BuildContext context, int index) { + VehicleTypeModel vehicleTypeModel = adVM.vehicleTypes[index]; + return InkWell( + onTap: () { + adVM.updateSelectionVehicleTypeId( + SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: vehicleTypeModel.vehicleTypeName ?? "", errorValue: ""), + ); + showMyBottomSheet(context, child: const AdDurationSelectionSheetContent(isUpdateAdSelected: false, isFromExtendAd: false)); + }, + child: SizedBox( + width: double.infinity, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Duration: ".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), - adVM.vehicleAdDurationId.selectedOption.toText(fontSize: 13, isBold: true), - const Icon(Icons.keyboard_arrow_down_sharp, color: MyColors.darkPrimaryColor, size: 20), - ], - ).paddingOnly(top: 5, bottom: 5), - ], - if (!isProvider) ...[ - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - adVM.vehicleAdDurationId.itemPrice.toText(fontSize: 22, isBold: true), - 2.width, - Padding( - padding: const EdgeInsets.only(bottom: 4), - child: "SAR".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), - ), + vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18, isBold: true), + getVehicleAdTypeIcon(vehicleTypeModel.vehicleTypeEnum!), ], ), + if (isProvider) ...[ + Row( + children: [ + "Duration: ".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), + "Valid Until Subscription Expiration".toText(fontSize: 13, isBold: true), + ], + ).paddingOnly(top: 5, bottom: 5), + ] else ...[ + Row( + children: [ + "Duration: ".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), + adVM.vehicleAdDurationId.selectedOption.toText(fontSize: 13, isBold: true), + const Icon(Icons.keyboard_arrow_down_sharp, color: MyColors.darkPrimaryColor, size: 20), + ], + ).paddingOnly(top: 5, bottom: 5), + ], + if (!isProvider) ...[ + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + adVM.vehicleAdDurationId.itemPrice.toText(fontSize: 22, isBold: true), + 2.width, + Padding( + padding: const EdgeInsets.only(bottom: 4), + child: "SAR".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true), + ), + ], + ), + ], ], - ], + ), ), - ), - ], - ), - ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.symmetric(horizontal: 20, vertical: 10)), - ); - }, - separatorBuilder: (BuildContext context, int index) { - return 9.height; - }, - padding: const EdgeInsets.all(20), - ); - }), - ), - if (isProvider) ...[ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - "5 of 10 ".toText(fontSize: 29, isBold: true, letterSpacing: 0, height: 1), - "Ads Remaining ".toText(fontSize: 17, color: MyColors.lightTextColor, isBold: true), - ], - ), - const Text.rich( - TextSpan( + ], + ), + ).toWhiteContainer(width: double.infinity, isBorderRequired: vehicleTypeModel.isSelected! ? true : false, pading: const EdgeInsets.symmetric(horizontal: 20, vertical: 10)), + ); + }, + separatorBuilder: (BuildContext context, int index) { + return 9.height; + }, + padding: const EdgeInsets.all(20), + ); + }), + ), + if (isProvider) ...[ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( children: [ - TextSpan( - text: "You have left with 05 out of 50 ads given in the subscription. ", - style: TextStyle( - fontSize: 14, - color: MyColors.lightTextColor, - )), - TextSpan( - text: "Update Subscription", - style: TextStyle( - decoration: TextDecoration.underline, - fontSize: 14, - fontWeight: FontWeight.w600, - color: MyColors.darkPrimaryColor, - )) + "5 of 10 ".toText(fontSize: 29, isBold: true, letterSpacing: 0, height: 1), + "Ads Remaining ".toText(fontSize: 17, color: MyColors.lightTextColor, isBold: true), ], ), - ), - 10.height, - ], - ).toContainer(paddingAll: 20, backgroundColor: Colors.white), - ] - ], + const Text.rich( + TextSpan( + children: [ + TextSpan( + text: "You have left with 05 out of 50 ads given in the subscription. ", + style: TextStyle( + fontSize: 14, + color: MyColors.lightTextColor, + )), + TextSpan( + text: "Update Subscription", + style: TextStyle( + decoration: TextDecoration.underline, + fontSize: 14, + fontWeight: FontWeight.w600, + color: MyColors.darkPrimaryColor, + )) + ], + ), + ), + 10.height, + ], + ).toContainer(paddingAll: 20, backgroundColor: Colors.white), + ] + ], + ), ), ); } diff --git a/lib/views/user/login_method_selection_page.dart b/lib/views/user/login_method_selection_page.dart index 47ce5aa..2f465d8 100644 --- a/lib/views/user/login_method_selection_page.dart +++ b/lib/views/user/login_method_selection_page.dart @@ -54,12 +54,12 @@ class _LoginMethodSelectionPageState extends State { Expanded( child: ShowImageButton( onClick: () { - userVM.verifiyAuth(context: context, userToken: widget.userToken, apptype: appState.currentAppType); + userVM.verifiyAuth(context: context, userToken: widget.userToken, apptype: appState.currentAppType, loginType: "3" ); //userVM.performBasicOtpLoginSelectionPage(context, userToken: userToken,appType: appState.currentAppType); }, title: LocaleKeys.fingerPrint.tr(), icon: MyAssets.icFingerprintSvg, - isDisabled: userVM.isBioAvailable(Platform.isAndroid ? BiometricType.weak : BiometricType.fingerprint), + isDisabled: userVM.isBioAvailable(Platform.isAndroid ? BiometricType.weak : BiometricType.fingerprint, ), ), ), 20.width, @@ -67,7 +67,7 @@ class _LoginMethodSelectionPageState extends State { child: ShowImageButton( onClick: () { // userVM.performBasicOtpLoginSelectionPage(context, userToken: widget.userToken, appType: appState.currentAppType); - userVM.verifiyAuth(context: context, userToken: widget.userToken, apptype: appState.currentAppType); + userVM.verifiyAuth(context: context, userToken: widget.userToken, apptype: appState.currentAppType, loginType: "4" ); }, title: LocaleKeys.faceRecognition.tr(), icon: MyAssets.icFace, @@ -82,7 +82,7 @@ class _LoginMethodSelectionPageState extends State { Expanded( child: ShowImageButton( onClick: () { - userVM.performBasicOtpLoginSelectionPage(context, userToken: widget.userToken, appType: appState.currentAppType); + userVM.performBasicOtpLoginSelectionPage(context, userToken: widget.userToken, appType: appState.currentAppType,loginType: "1"); }, title: LocaleKeys.SMS.tr(), icon: MyAssets.icSmsSvg, @@ -93,7 +93,7 @@ class _LoginMethodSelectionPageState extends State { child: ShowImageButton( onClick: () { // navigateWithName(context, AppRoutes.dashboard); - userVM.performBasicOtpLoginSelectionPage(context, userToken: widget.userToken, appType: appState.currentAppType); + userVM.performBasicOtpLoginSelectionPage(context, userToken: widget.userToken, appType: appState.currentAppType, loginType: "2"); }, title: LocaleKeys.whatsapp.tr(), icon: MyAssets.icWhatsAppSvg, diff --git a/lib/views/user/login_with_password_page.dart b/lib/views/user/login_with_password_page.dart index 790dec4..a5b189a 100644 --- a/lib/views/user/login_with_password_page.dart +++ b/lib/views/user/login_with_password_page.dart @@ -46,8 +46,10 @@ class _LoginWithPasswordState extends State { void initState() { super.initState(); if (AppState().currentAppType == AppType.provider) { - phoneNum = "966580816976"; - password = "123@Shf"; + // phoneNum = "966580816976"; + // password = "123@Shf"; + phoneNum = "966530896018"; + password = "Amir@123"; } scheduleMicrotask(() { userVM = Provider.of(context, listen: false); diff --git a/lib/views/user/register_provider_page.dart b/lib/views/user/register_provider_page.dart index 121a3f2..ca78f1c 100644 --- a/lib/views/user/register_provider_page.dart +++ b/lib/views/user/register_provider_page.dart @@ -29,15 +29,18 @@ class _RegisterPageState extends State { String phoneNum = "", countryCode = ""; int role = -1, countryId = -1; + DropValue? selectedDrop; TextEditingController emailController = TextEditingController(); Future? futureRoles; Future? futureCountries; + UserVM? userVM; @override void initState() { super.initState(); + userVM = context.read(); fetchData(); } @@ -57,7 +60,6 @@ class _RegisterPageState extends State { @override Widget build(BuildContext context) { - final UserVM userVM = context.read(); return Scaffold( appBar: const CustomAppBar(isRemoveBackButton: false, title: ""), body: Container( @@ -129,13 +131,15 @@ class _RegisterPageState extends State { 10.height, DropdownField( (DropValue value) { + selectedDrop = value; setState(() { countryCode = value.subValue; countryId = value.id; }); }, + dropdownValue: selectedDrop, list: dropList, - hint: LocaleKeys.chooseCountry.tr(), + hint: LocaleKeys.chooseCountry .tr(), ), ], ); @@ -205,7 +209,7 @@ class _RegisterPageState extends State { title: LocaleKeys.continu.tr(), maxWidth: double.infinity, onPressed: () { - if (validation()) userVM.performBasicOtpRegisterPage(context, countryCode: countryCode, phoneNum: phoneNum, role: role); + if (validation()) userVM!.performBasicOtpRegisterPage(context, countryCode: countryCode, phoneNum: phoneNum, role: role); // if (validation()) performBasicOtp(context); }, ), diff --git a/lib/widgets/tab/role_type_tab.dart b/lib/widgets/tab/role_type_tab.dart index fa363ba..a3983cf 100644 --- a/lib/widgets/tab/role_type_tab.dart +++ b/lib/widgets/tab/role_type_tab.dart @@ -31,19 +31,21 @@ class _RoleTypeTabState extends State { }); }, child: Container( - width: widget.width ?? (MediaQuery - .of(context) - .size - .width / 2) - 30, + width: widget.width ?? (MediaQuery.of(context).size.width / 2) - 30, height: 45, decoration: BoxDecoration( color: widget.selectedIndex == index ? MyColors.darkPrimaryColor : Colors.grey[200], // border: Border.all(color: type == ClassType.NUMBER ? MyColors.darkPrimaryColor : Colors.transparent, width: 2), - borderRadius: const BorderRadius.all(Radius.circular(0)), + borderRadius: const BorderRadius.all( + Radius.circular(0), + ), ), child: Center( child: Text( - widget.dropList[index].value, + (widget.dropList[index].value) == "ServiceProvider_Dealership" || (widget.dropList[index].value) == "ServiceProvider_Individual" + ? widget.dropList[index].value.split("_").first + "\n" + widget.dropList[index].value.split("_").last + : widget.dropList[index].value, + textAlign: TextAlign.center, style: TextStyle( color: widget.selectedIndex == index ? MyColors.white : Colors.black, fontSize: 15, diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 7ed1510..0000000 --- a/pubspec.lock +++ /dev/null @@ -1,1231 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - args: - dependency: transitive - description: - name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - async: - dependency: transitive - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - auto_size_text: - dependency: "direct main" - description: - name: auto_size_text - sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - badges: - dependency: "direct main" - description: - name: badges - sha256: a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 - url: "https://pub.dev" - source: hosted - version: "3.2.3" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 - url: "https://pub.dev" - source: hosted - version: "2.0.0" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 - url: "https://pub.dev" - source: hosted - version: "1.0.2" - carousel_slider: - dependency: "direct main" - description: - name: carousel_slider - sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42" - url: "https://pub.dev" - source: hosted - version: "4.2.1" - characters: - dependency: transitive - description: - name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" - source: hosted - version: "1.17.1" - country_code_picker: - dependency: "direct main" - description: - name: country_code_picker - sha256: "92818885f0e47486539f80463b66f649970506a91dd3c0731ca3ba5308324a4d" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb - url: "https://pub.dev" - source: hosted - version: "0.3.3+5" - crypto: - dependency: transitive - description: - name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" - source: hosted - version: "3.0.3" - csslib: - dependency: transitive - description: - name: csslib - sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d - url: "https://pub.dev" - source: hosted - version: "1.0.6" - device_info_plus: - dependency: "direct main" - description: - name: device_info_plus - sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110" - url: "https://pub.dev" - source: hosted - version: "9.1.2" - device_info_plus_platform_interface: - dependency: transitive - description: - name: device_info_plus_platform_interface - sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 - url: "https://pub.dev" - source: hosted - version: "7.0.0" - dropdown_button2: - dependency: "direct main" - description: - name: dropdown_button2 - sha256: b0fe8d49a030315e9eef6c7ac84ca964250155a6224d491c1365061bc974a9e1 - url: "https://pub.dev" - source: hosted - version: "2.3.9" - easy_localization: - dependency: "direct main" - description: - name: easy_localization - sha256: de63e3b422adfc97f256cbb3f8cf12739b6a4993d390f3cadb3f51837afaefe5 - url: "https://pub.dev" - source: hosted - version: "3.0.3" - easy_logger: - dependency: transitive - description: - name: easy_logger - sha256: c764a6e024846f33405a2342caf91c62e357c24b02c04dbc712ef232bf30ffb7 - url: "https://pub.dev" - source: hosted - version: "0.0.2" - equatable: - dependency: "direct main" - description: - name: equatable - sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 - url: "https://pub.dev" - source: hosted - version: "2.0.5" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - file_picker: - dependency: "direct main" - description: - name: file_picker - sha256: "4e42aacde3b993c5947467ab640882c56947d9d27342a5b6f2895b23956954a6" - url: "https://pub.dev" - source: hosted - version: "6.1.1" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" - url: "https://pub.dev" - source: hosted - version: "0.9.2+1" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: "182c3f8350cee659f7b115e956047ee3dc672a96665883a545e81581b9a82c72" - url: "https://pub.dev" - source: hosted - version: "0.9.3+2" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" - url: "https://pub.dev" - source: hosted - version: "2.6.1" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 - url: "https://pub.dev" - source: hosted - version: "0.9.3+1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" - url: "https://pub.dev" - source: hosted - version: "0.7.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" - url: "https://pub.dev" - source: hosted - version: "3.3.1" - flutter_inappwebview: - dependency: "direct main" - description: - name: flutter_inappwebview - sha256: f73505c792cf083d5566e1a94002311be497d984b5607f25be36d685cf6361cf - url: "https://pub.dev" - source: hosted - version: "5.7.2+3" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 - url: "https://pub.dev" - source: hosted - version: "2.0.3" - flutter_localizations: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: f185ac890306b5779ecbd611f52502d8d4d63d27703ef73161ca0407e815f02c - url: "https://pub.dev" - source: hosted - version: "2.0.16" - flutter_svg: - dependency: "direct main" - description: - name: flutter_svg - sha256: "6ff9fa12892ae074092de2fa6a9938fb21dbabfdaa2ff57dc697ff912fc8d4b2" - url: "https://pub.dev" - source: hosted - version: "1.1.6" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - fluttertoast: - dependency: "direct main" - description: - name: fluttertoast - sha256: "474f7d506230897a3cd28c965ec21c5328ae5605fc9c400cd330e9e9d6ac175c" - url: "https://pub.dev" - source: hosted - version: "8.2.2" - geocoding: - dependency: "direct main" - description: - name: geocoding - sha256: e1dc0ac56666d9ed1d5a9ae5543ce9eb5986db6209cc7600103487d09192059c - url: "https://pub.dev" - source: hosted - version: "2.1.1" - geocoding_android: - dependency: transitive - description: - name: geocoding_android - sha256: "609db1d71bc364dd9d0616f72a41c01e0c74f3a3807efb85e0d5a67e57baf50f" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - geocoding_ios: - dependency: transitive - description: - name: geocoding_ios - sha256: "8f79e380abb640ef4d88baee8bb65390058c802601158d0813dc990b36b189d2" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - geocoding_platform_interface: - dependency: transitive - description: - name: geocoding_platform_interface - sha256: "8848605d307d844d89937cdb4b8ad7dfa880552078f310fa24d8a460f6dddab4" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - geolocator: - dependency: "direct main" - description: - name: geolocator - sha256: "9d6eff112971b9f195271834b390fc0e1899a9a6c96225ead72efd5d4aaa80c7" - url: "https://pub.dev" - source: hosted - version: "10.0.0" - geolocator_android: - dependency: transitive - description: - name: geolocator_android - sha256: "6cd3c622df085a79fd61f5c14fa024c3ba593aa6b1df2ee809ac59f45e6a9861" - url: "https://pub.dev" - source: hosted - version: "4.1.8" - geolocator_apple: - dependency: transitive - description: - name: geolocator_apple - sha256: "36527c555f4c425f7d8fa8c7c07d67b78e3ff7590d40448051959e1860c1cfb4" - url: "https://pub.dev" - source: hosted - version: "2.2.7" - geolocator_platform_interface: - dependency: transitive - description: - name: geolocator_platform_interface - sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386 - url: "https://pub.dev" - source: hosted - version: "4.0.7" - geolocator_web: - dependency: transitive - description: - name: geolocator_web - sha256: f68a122da48fcfff68bbc9846bb0b74ef651afe84a1b1f6ec20939de4d6860e1 - url: "https://pub.dev" - source: hosted - version: "2.1.6" - geolocator_windows: - dependency: transitive - description: - name: geolocator_windows - sha256: "463045515b08bd83f73e014359c4ad063b902eb3899952cfb784497ae6c6583b" - url: "https://pub.dev" - source: hosted - version: "0.2.0" - google_maps: - dependency: transitive - description: - name: google_maps - sha256: "555d5d736339b0478e821167ac521c810d7b51c3b2734e6802a9f046b64ea37a" - url: "https://pub.dev" - source: hosted - version: "6.3.0" - google_maps_flutter: - dependency: "direct main" - description: - name: google_maps_flutter - sha256: d4914cb38b3dcb62c39c085d968d434de0f8050f00f4d9f5ba4a7c7e004934cb - url: "https://pub.dev" - source: hosted - version: "2.5.0" - google_maps_flutter_android: - dependency: transitive - description: - name: google_maps_flutter_android - sha256: e6cb018169e49332f88d23b1d2119b09e8ab4e7d3a1b889a1b7b3fd113e034ba - url: "https://pub.dev" - source: hosted - version: "2.5.1" - google_maps_flutter_ios: - dependency: transitive - description: - name: google_maps_flutter_ios - sha256: "2a595c9789070786c654e9772ec0d1bb759ae37d2dd776291af5398531274e06" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - google_maps_flutter_platform_interface: - dependency: transitive - description: - name: google_maps_flutter_platform_interface - sha256: a3e9e6896501e566d902c6c69f010834d410ef4b7b5c18b90c77e871c86b7907 - url: "https://pub.dev" - source: hosted - version: "2.4.1" - google_maps_flutter_web: - dependency: transitive - description: - name: google_maps_flutter_web - sha256: "05067c5aa762ebee44b7ef4902a311ed8cf891ef655e2798bae063aa3050c8d9" - url: "https://pub.dev" - source: hosted - version: "0.5.4+1" - hexcolor: - dependency: "direct main" - description: - name: hexcolor - sha256: c07f4bbb9095df87eeca87e7c69e8c3d60f70c66102d7b8d61c4af0453add3f6 - url: "https://pub.dev" - source: hosted - version: "3.0.1" - html: - dependency: transitive - description: - name: html - sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.dev" - source: hosted - version: "0.15.4" - http: - dependency: "direct main" - description: - name: http - sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" - url: "https://pub.dev" - source: hosted - version: "0.13.6" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - image_picker: - dependency: "direct main" - description: - name: image_picker - sha256: b6951e25b795d053a6ba03af5f710069c99349de9341af95155d52665cb4607c - url: "https://pub.dev" - source: hosted - version: "0.8.9" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: d32a997bcc4ee135aebca8e272b7c517927aa65a74b9c60a81a2764ef1a0462d - url: "https://pub.dev" - source: hosted - version: "0.8.7+5" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0" - url: "https://pub.dev" - source: hosted - version: "2.2.0" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: c5538cacefacac733c724be7484377923b476216ad1ead35a0d2eadcdc0fc497 - url: "https://pub.dev" - source: hosted - version: "0.8.8+2" - image_picker_linux: - dependency: transitive - description: - name: image_picker_linux - sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - image_picker_macos: - dependency: transitive - description: - name: image_picker_macos - sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 - url: "https://pub.dev" - source: hosted - version: "2.9.1" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" - url: "https://pub.dev" - source: hosted - version: "0.2.1+1" - injector: - dependency: "direct main" - description: - name: injector - sha256: "2a683124c716e93b45521794f55bfe770e069cb3d871fc4fbc65b5acef78e832" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - intl: - dependency: "direct main" - description: - name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 - url: "https://pub.dev" - source: hosted - version: "0.18.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - js_wrapping: - dependency: transitive - description: - name: js_wrapping - sha256: e385980f7c76a8c1c9a560dfb623b890975841542471eade630b2871d243851c - url: "https://pub.dev" - source: hosted - version: "0.7.4" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" - url: "https://pub.dev" - source: hosted - version: "10.0.0" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 - url: "https://pub.dev" - source: hosted - version: "2.0.1" - lints: - dependency: transitive - description: - name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - local_auth: - dependency: "direct main" - description: - name: local_auth - sha256: "7e6c63082e399b61e4af71266b012e767a5d4525dd6e9ba41e174fd42d76e115" - url: "https://pub.dev" - source: hosted - version: "2.1.7" - local_auth_android: - dependency: transitive - description: - name: local_auth_android - sha256: "9ad0b1ffa6f04f4d91e38c2d4c5046583e23f4cae8345776a994e8670df57fb1" - url: "https://pub.dev" - source: hosted - version: "1.0.34" - local_auth_ios: - dependency: transitive - description: - name: local_auth_ios - sha256: "26a8d1ad0b4ef6f861d29921be8383000fda952e323a5b6752cf82ca9cf9a7a9" - url: "https://pub.dev" - source: hosted - version: "1.1.4" - local_auth_platform_interface: - dependency: transitive - description: - name: local_auth_platform_interface - sha256: fc5bd537970a324260fda506cfb61b33ad7426f37a8ea5c461cf612161ebba54 - url: "https://pub.dev" - source: hosted - version: "1.0.8" - local_auth_windows: - dependency: transitive - description: - name: local_auth_windows - sha256: "505ba3367ca781efb1c50d3132e44a2446bccc4163427bc203b9b4d8994d97ea" - url: "https://pub.dev" - source: hosted - version: "1.0.10" - logger: - dependency: "direct main" - description: - name: logger - sha256: af05cc8714f356fd1f3888fb6741cbe9fbe25cdb6eedbab80e1a6db21047d4a4 - url: "https://pub.dev" - source: hosted - version: "2.3.0" - logging: - dependency: "direct main" - description: - name: logging - sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - matcher: - dependency: transitive - description: - name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb - url: "https://pub.dev" - source: hosted - version: "0.12.16+1" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" - url: "https://pub.dev" - source: hosted - version: "0.8.0" - meta: - dependency: transitive - description: - name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - mime: - dependency: transitive - description: - name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" - source: hosted - version: "1.0.4" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - octo_image: - dependency: transitive - description: - name: octo_image - sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - path: - dependency: transitive - description: - name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - path_drawing: - dependency: transitive - description: - name: path_drawing - sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977 - url: "https://pub.dev" - source: hosted - version: "1.0.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf - url: "https://pub.dev" - source: hosted - version: "1.0.1" - path_provider: - dependency: "direct main" - description: - name: path_provider - sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" - url: "https://pub.dev" - source: hosted - version: "2.0.15" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" - url: "https://pub.dev" - source: hosted - version: "2.2.0" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" - url: "https://pub.dev" - source: hosted - version: "2.2.1" - percent_indicator: - dependency: "direct main" - description: - name: percent_indicator - sha256: c37099ad833a883c9d71782321cb65c3a848c21b6939b6185f0ff6640d05814c - url: "https://pub.dev" - source: hosted - version: "4.2.3" - permission_handler: - dependency: "direct main" - description: - name: permission_handler - sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" - url: "https://pub.dev" - source: hosted - version: "10.4.3" - permission_handler_android: - dependency: transitive - description: - name: permission_handler_android - sha256: d74e77a5ecd38649905db0a7d05ef16bed42ff263b9efb73ed794317c5764ec3 - url: "https://pub.dev" - source: hosted - version: "10.3.4" - permission_handler_apple: - dependency: transitive - description: - name: permission_handler_apple - sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" - url: "https://pub.dev" - source: hosted - version: "9.1.4" - permission_handler_platform_interface: - dependency: transitive - description: - name: permission_handler_platform_interface - sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" - url: "https://pub.dev" - source: hosted - version: "3.11.3" - permission_handler_windows: - dependency: transitive - description: - name: permission_handler_windows - sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 - url: "https://pub.dev" - source: hosted - version: "0.1.3" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 - url: "https://pub.dev" - source: hosted - version: "5.4.0" - platform: - dependency: transitive - description: - name: platform - sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d - url: "https://pub.dev" - source: hosted - version: "2.1.6" - provider: - dependency: "direct main" - description: - name: provider - sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f - url: "https://pub.dev" - source: hosted - version: "6.0.5" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.dev" - source: hosted - version: "0.27.7" - sanitize_html: - dependency: transitive - description: - name: sanitize_html - sha256: "0a445f19bbaa196f5a4f93461aa066b94e6e025622eb1e9bc77872a5e25233a5" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac - url: "https://pub.dev" - source: hosted - version: "2.2.1" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" - url: "https://pub.dev" - source: hosted - version: "2.2.1" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" - url: "https://pub.dev" - source: hosted - version: "2.3.4" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a - url: "https://pub.dev" - source: hosted - version: "2.3.1" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a - url: "https://pub.dev" - source: hosted - version: "2.3.1" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf - url: "https://pub.dev" - source: hosted - version: "2.2.1" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f - url: "https://pub.dev" - source: hosted - version: "2.3.1" - shimmer: - dependency: "direct main" - description: - name: shimmer - sha256: "1f1009b5845a1f88f1c5630212279540486f97409e9fc3f63883e71070d107bf" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - signalr_core: - dependency: "direct main" - description: - name: signalr_core - sha256: dca676372a00c051511591ed0e24521ff7aa4e9320a7fa778a1007f7f522c8c0 - url: "https://pub.dev" - source: hosted - version: "1.1.1" - simple_gesture_detector: - dependency: transitive - description: - name: simple_gesture_detector - sha256: "86d08f85f1f58583b7b4b941d989f48ea6ce08c1724a1d10954a277c2ec36592" - url: "https://pub.dev" - source: hosted - version: "0.2.0" - sizer: - dependency: "direct main" - description: - name: sizer - sha256: d2b3cb6cbc4a637f508dacd786bae55df31e5fc088044248a43e4fd1e050c117 - url: "https://pub.dev" - source: hosted - version: "2.0.15" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - sqflite: - dependency: transitive - description: - name: sqflite - sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" - url: "https://pub.dev" - source: hosted - version: "2.5.0" - sse_client: - dependency: transitive - description: - name: sse_client - sha256: "71bd826430b41ab20a69d85bf2dfe9f11cfe222938e681ada1aea71fc8adf348" - url: "https://pub.dev" - source: hosted - version: "0.1.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - synchronized: - dependency: transitive - description: - name: synchronized - sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - table_calendar: - dependency: "direct main" - description: - name: table_calendar - sha256: "1e3521a3e6d3fc7f645a58b135ab663d458ab12504f1ea7f9b4b81d47086c478" - url: "https://pub.dev" - source: hosted - version: "3.0.9" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb - url: "https://pub.dev" - source: hosted - version: "0.5.1" - tuple: - dependency: transitive - description: - name: tuple - sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 - url: "https://pub.dev" - source: hosted - version: "2.0.2" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" - universal_io: - dependency: transitive - description: - name: universal_io - sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" - url: "https://pub.dev" - source: hosted - version: "2.2.2" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - sha256: "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27" - url: "https://pub.dev" - source: hosted - version: "6.1.14" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330 - url: "https://pub.dev" - source: hosted - version: "6.1.0" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f" - url: "https://pub.dev" - source: hosted - version: "6.1.5" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e - url: "https://pub.dev" - source: hosted - version: "3.0.6" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88 - url: "https://pub.dev" - source: hosted - version: "3.0.7" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: ba140138558fcc3eead51a1c42e92a9fb074a1b1149ed3c73e66035b2ccd94f2 - url: "https://pub.dev" - source: hosted - version: "2.0.19" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069" - url: "https://pub.dev" - source: hosted - version: "3.0.8" - uuid: - dependency: transitive - description: - name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.dev" - source: hosted - version: "3.0.7" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 - url: "https://pub.dev" - source: hosted - version: "13.0.0" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b - url: "https://pub.dev" - source: hosted - version: "2.4.0" - win32: - dependency: transitive - description: - name: win32 - sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" - url: "https://pub.dev" - source: hosted - version: "5.0.9" - win32_registry: - dependency: transitive - description: - name: win32_registry - sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9 - url: "https://pub.dev" - source: hosted - version: "1.1.1" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" - url: "https://pub.dev" - source: hosted - version: "1.0.3" - xml: - dependency: transitive - description: - name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" - url: "https://pub.dev" - source: hosted - version: "6.3.0" -sdks: - dart: ">=3.0.0 <4.0.0" - flutter: ">=3.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index 504080a..a85049c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,8 +17,7 @@ dependencies: provider: ^6.0.0 easy_localization: ^3.0.3 http: ^0.13.3 - permission_handler: ^10.2.0 - device_info_plus: any + permission_handler: ^11.3.1 flutter_svg: ^1.0.3 sizer: ^2.0.15 fluttertoast: ^8.0.8 @@ -29,7 +28,6 @@ dependencies: logger: 2.3.0 auto_size_text: any shimmer: ^2.0.0 - local_auth: any hexcolor: ^3.0.1 cached_network_image: any url_launcher: ^6.1.14 @@ -53,7 +51,10 @@ dependencies: # Auth -local_auth: ^2.2.0 + + local_auth: ^2.2.0 + huawei_fido: ^6.3.0+305 + device_info_plus: ^10.1.0 dev_dependencies: