diff --git a/.vscode/launch.json b/.vscode/launch.json index 56a0452..ef3b4ee 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,23 +4,25 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { "name": "rasadyar_app", "request": "launch", - "type": "dart" + "type": "dart", + "program": "lib/main.dart", }, { "name": "rasadyar_app (profile mode)", "request": "launch", "type": "dart", - "flutterMode": "profile" + "flutterMode": "profile", + "program": "lib/main.dart", }, { "name": "rasadyar_app (release mode)", "request": "launch", "type": "dart", - "flutterMode": "release" + "flutterMode": "release", + "program": "lib/main.dart", } ] } \ No newline at end of file diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index dfb286d..d2212b6 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -19,7 +19,7 @@ if (keystorePropertiesFile.exists()) { android { namespace = "ir.mnpc.rasadyar" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = "28.2.13676358" compileOptions { sourceCompatibility = JavaVersion.VERSION_21 diff --git a/android/local.properties b/android/local.properties index 200b790..8cd06f6 100644 --- a/android/local.properties +++ b/android/local.properties @@ -1,5 +1,5 @@ -sdk.dir=C:/Users/Housh11/AppData/Local/Android/Sdk +sdk.dir=C:\\Users\\Housh11\\AppData\\Local\\Android\\sdk flutter.sdk=C:\\src\\flutter flutter.buildMode=debug -flutter.versionName=1.3.32 -flutter.versionCode=29 \ No newline at end of file +flutter.versionName=1.3.33 +flutter.versionCode=30 \ No newline at end of file diff --git a/assets/icons/gallery_add.svg b/assets/icons/gallery_add.svg new file mode 100644 index 0000000..adb97ee --- /dev/null +++ b/assets/icons/gallery_add.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/vec/gallery_add.svg.vec b/assets/vec/gallery_add.svg.vec new file mode 100644 index 0000000..cf57447 Binary files /dev/null and b/assets/vec/gallery_add.svg.vec differ diff --git a/doc/BuildRow.png b/doc/BuildRow.png deleted file mode 100644 index 05606a0..0000000 Binary files a/doc/BuildRow.png and /dev/null differ diff --git a/doc/BuildRow.webp b/doc/BuildRow.webp new file mode 100644 index 0000000..14caac1 Binary files /dev/null and b/doc/BuildRow.webp differ diff --git a/doc/CoreLoadingIndicator.png b/doc/CoreLoadingIndicator.png deleted file mode 100644 index 20ed332..0000000 Binary files a/doc/CoreLoadingIndicator.png and /dev/null differ diff --git a/doc/CoreLoadingIndicator.webp b/doc/CoreLoadingIndicator.webp new file mode 100644 index 0000000..b9fe1d3 Binary files /dev/null and b/doc/CoreLoadingIndicator.webp differ diff --git a/doc/EmptyWidget.png b/doc/EmptyWidget.png deleted file mode 100644 index c7b4de0..0000000 Binary files a/doc/EmptyWidget.png and /dev/null differ diff --git a/doc/EmptyWidget.webp b/doc/EmptyWidget.webp new file mode 100644 index 0000000..f104722 Binary files /dev/null and b/doc/EmptyWidget.webp differ diff --git a/doc/LogoWidget.png b/doc/LogoWidget.png deleted file mode 100644 index 39d9a23..0000000 Binary files a/doc/LogoWidget.png and /dev/null differ diff --git a/doc/LogoWidget.webp b/doc/LogoWidget.webp new file mode 100644 index 0000000..c8563d6 Binary files /dev/null and b/doc/LogoWidget.webp differ diff --git a/doc/RErrorWidget.png b/doc/RErrorWidget.png deleted file mode 100644 index 0326572..0000000 Binary files a/doc/RErrorWidget.png and /dev/null differ diff --git a/doc/RErrorWidget.webp b/doc/RErrorWidget.webp new file mode 100644 index 0000000..571839a Binary files /dev/null and b/doc/RErrorWidget.webp differ diff --git a/doc/RSegment.png b/doc/RSegment.png deleted file mode 100644 index c7dac32..0000000 Binary files a/doc/RSegment.png and /dev/null differ diff --git a/doc/RSegment.webp b/doc/RSegment.webp new file mode 100644 index 0000000..0b046e7 Binary files /dev/null and b/doc/RSegment.webp differ diff --git a/lib/presentation/pages/test/view.dart b/lib/presentation/pages/test/view.dart index e8981b9..e1a7aad 100644 --- a/lib/presentation/pages/test/view.dart +++ b/lib/presentation/pages/test/view.dart @@ -8,6 +8,7 @@ class TestPage extends StatelessWidget { @override Widget build(BuildContext context) { + // ignore: unused_local_variable final TestLogic logic = Get.put(TestLogic()); return Scaffold( diff --git a/packages/chicken/lib/data/common/dio_error_handler.dart b/packages/chicken/lib/data/common/dio_error_handler.dart index 57f29bc..ffb4d44 100644 --- a/packages/chicken/lib/data/common/dio_error_handler.dart +++ b/packages/chicken/lib/data/common/dio_error_handler.dart @@ -25,6 +25,7 @@ class DioErrorHandler { } //wrong captcha => "detail": "Captcha code is incorrect" - 403 + // ignore: unused_element void _handle403() {} void _handleGeneric(DioException error) { diff --git a/packages/chicken/lib/data/data_source/local/chicken_local_imp.dart b/packages/chicken/lib/data/data_source/local/chicken_local_imp.dart index 9b83807..f66c786 100644 --- a/packages/chicken/lib/data/data_source/local/chicken_local_imp.dart +++ b/packages/chicken/lib/data/data_source/local/chicken_local_imp.dart @@ -1,4 +1,3 @@ -import 'package:rasadyar_chicken/chicken.dart'; import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart'; import 'package:rasadyar_core/core.dart'; @@ -15,7 +14,7 @@ class ChickenLocalDataSourceImp implements ChickenLocalDataSource { @override Future initWidleyUsed() async { - List tmpList = [ + /* List tmpList = [ WidelyUsedLocalItem( index: 0, pathId: 0, @@ -43,7 +42,7 @@ class ChickenLocalDataSourceImp implements ChickenLocalDataSource { iconPath: Assets.vec.cubeRotateSvg.path, path: ChickenRoutes.buysInProvinceSteward, ), - ]; + ]; */ } @override diff --git a/packages/chicken/lib/data/data_source/remote/auth/auth_remote.dart b/packages/chicken/lib/data/data_source/remote/auth/auth_remote.dart index 4878de0..c42add7 100644 --- a/packages/chicken/lib/data/data_source/remote/auth/auth_remote.dart +++ b/packages/chicken/lib/data/data_source/remote/auth/auth_remote.dart @@ -1,4 +1,4 @@ -import 'package:rasadyar_chicken/data/models/response/captcha/captcha_response_model.dart'; + import 'package:rasadyar_chicken/data/models/response/user_info/user_info_model.dart'; import 'package:rasadyar_chicken/data/models/response/user_profile_model/user_profile_model.dart'; diff --git a/packages/chicken/lib/data/data_source/remote/auth/auth_remote_imp.dart b/packages/chicken/lib/data/data_source/remote/auth/auth_remote_imp.dart index 6454fed..a0b85f8 100644 --- a/packages/chicken/lib/data/data_source/remote/auth/auth_remote_imp.dart +++ b/packages/chicken/lib/data/data_source/remote/auth/auth_remote_imp.dart @@ -11,7 +11,9 @@ class AuthRemoteDataSourceImp extends AuthRemoteDataSource { AuthRemoteDataSourceImp(this._httpClient); @override - Future login({required Map authRequest}) async { + Future login({ + required Map authRequest, + }) async { var res = await _httpClient.post( '/api/login/', data: authRequest, @@ -40,7 +42,7 @@ class AuthRemoteDataSourceImp extends AuthRemoteDataSource { @override Future getUserInfo(String phoneNumber) async { var res = await _httpClient.post( - 'https://userbackend.rasadyaar.ir/api/send_otp/', + 'https://userbackend.rasadyar.com/api/send_otp/', data: {"mobile": phoneNumber, "state": ""}, fromJson: UserInfoModel.fromJson, headers: {'Content-Type': 'application/json'}, @@ -56,7 +58,10 @@ class AuthRemoteDataSourceImp extends AuthRemoteDataSource { await _httpClient.post( '/steward-app-login/', data: queryParameters, - headers: {'Content-Type': 'application/json', 'Authorization': 'Bearer $token'}, + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $token', + }, ); } } diff --git a/packages/chicken/lib/data/data_source/remote/chicken/chicken_remote_imp.dart b/packages/chicken/lib/data/data_source/remote/chicken/chicken_remote_imp.dart index 23ea0ff..f9e6741 100644 --- a/packages/chicken/lib/data/data_source/remote/chicken/chicken_remote_imp.dart +++ b/packages/chicken/lib/data/data_source/remote/chicken/chicken_remote_imp.dart @@ -142,7 +142,7 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource { required String token, required Map allocation, }) async { - var res = await _httpClient.put( + await _httpClient.put( '/steward-allocation/0/', headers: {'Authorization': 'Bearer $token'}, data: allocation, @@ -312,7 +312,7 @@ class ChickenRemoteDatasourceImp implements ChickenRemoteDatasource { required String token, required CreateStewardFreeBar body, }) async { - var res = await _httpClient.post( + await _httpClient.post( '/steward_free_bar/', headers: {'Authorization': 'Bearer $token'}, data: body.toJson()..removeWhere((key, value) => value==null,), diff --git a/packages/chicken/lib/data/models/request/kill_registration/kill_registration.dart b/packages/chicken/lib/data/models/request/kill_registration/kill_registration.dart index b8fd661..b5380b4 100644 --- a/packages/chicken/lib/data/models/request/kill_registration/kill_registration.dart +++ b/packages/chicken/lib/data/models/request/kill_registration/kill_registration.dart @@ -14,6 +14,7 @@ abstract class KillRegistrationRequest with _$KillRegistrationRequest { int? quantity, String? sendDate, String? chickenBreed, + // ignore: invalid_annotation_target @JsonKey(name: "Index_weight") double? indexWeight, String? losses, List? auctionList, diff --git a/packages/chicken/lib/data/models/response/poultry_order/poultry_order.dart b/packages/chicken/lib/data/models/response/poultry_order/poultry_order.dart index 607ef0b..f11f99c 100644 --- a/packages/chicken/lib/data/models/response/poultry_order/poultry_order.dart +++ b/packages/chicken/lib/data/models/response/poultry_order/poultry_order.dart @@ -20,6 +20,7 @@ abstract class PoultryOrder with _$PoultryOrder { double? amount, String? financialOperation, int? remainQuantity, + // ignore: invalid_annotation_target @JsonKey(name: "Index_weight") double? indexWeight, Hatching? hatching, String? finalState, diff --git a/packages/chicken/lib/presentation/pages/common/auth/logic.dart b/packages/chicken/lib/presentation/pages/common/auth/logic.dart index feac081..17af2d5 100644 --- a/packages/chicken/lib/presentation/pages/common/auth/logic.dart +++ b/packages/chicken/lib/presentation/pages/common/auth/logic.dart @@ -122,6 +122,15 @@ class AuthLogic extends GetxController with GetTickerProviderStateMixin { var tmpRoles = result?.role ?.where((element) => element == 'PoultryScience' || element == 'Steward') .toList(); + + /*var tmpRoles = result?.role?.where((element) { + return element == 'PoultryScience' || + element == 'Steward' || + element == 'CityOperator' || + element == 'CityJahad' || + element.toLowerCase().contains("admin"); + }).toList();*/ + await tokenStorageService.saveRoles(_module, tmpRoles ?? []); if (rememberMe.value) { await tokenStorageService.saveUserPass( diff --git a/packages/chicken/lib/presentation/pages/common/role/logic.dart b/packages/chicken/lib/presentation/pages/common/role/logic.dart index bec7578..3253738 100644 --- a/packages/chicken/lib/presentation/pages/common/role/logic.dart +++ b/packages/chicken/lib/presentation/pages/common/role/logic.dart @@ -9,20 +9,10 @@ class RoleLogic extends GetxController { void onInit() { super.onInit(); List items = tokenService.getUserLocal(Module.chicken)!.roles ?? []; - if (items.isNotEmpty ?? false) { + if (items.isNotEmpty) { roles.assignAll(items); } } - @override - void onReady() { - // TODO: implement onReady - super.onReady(); - } - @override - void onClose() { - // TODO: implement onClose - super.onClose(); - } } diff --git a/packages/chicken/lib/presentation/pages/common/role/view.dart b/packages/chicken/lib/presentation/pages/common/role/view.dart index d4c8f89..58b1b11 100644 --- a/packages/chicken/lib/presentation/pages/common/role/view.dart +++ b/packages/chicken/lib/presentation/pages/common/role/view.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:rasadyar_chicken/data/common/fa_user_role.dart'; -import 'package:rasadyar_chicken/presentation/widget/app_bar.dart'; import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart'; import 'package:rasadyar_core/core.dart'; @@ -15,11 +14,7 @@ class RolePage extends GetView { isBase: true, child: Column( children: [ - Assets.images.selectRole.image( - height: 212.h, - width: Get.width.w, - fit: BoxFit.cover, - ), + Assets.images.selectRole.image(height: 212.h, width: Get.width.w, fit: BoxFit.cover), ObxValue((data) { return Expanded( child: GridView.builder( @@ -38,15 +33,9 @@ class RolePage extends GetView { title: role.keys.first, onTap: () async { String route = role.values.first; - await controller.gService.saveRoute( - Module.chicken, - route, - ); + await controller.gService.saveRoute(Module.chicken, route); - await controller.gService.saveRole( - Module.chicken, - data[index], - ); + await controller.gService.saveRole(Module.chicken, data[index]); Get.offAllNamed(route); }, ); @@ -58,17 +47,9 @@ class RolePage extends GetView { ), ); } - - } - -Widget roleCard({ - required String title, - Function()? onTap, - int? width, - int? height, -}) { +Widget roleCard({required String title, Function()? onTap, int? width, int? height}) { return Container( width: width?.w ?? 128.w, height: height?.h ?? 48.h, @@ -84,6 +65,7 @@ Widget roleCard({ child: Text( title, style: AppFonts.yekan12Bold.copyWith(color: AppColor.blueNormal), + textAlign: TextAlign.center, ), ), ), diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/logic.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/logic.dart new file mode 100644 index 0000000..ac81519 --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/logic.dart @@ -0,0 +1,152 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_core/core.dart'; + +import '../widgets/step1_page.dart'; + +class PoultryFarmInspectionHomeLogic extends GetxController + with GetTickerProviderStateMixin { + RxInt selectedSegmentIndex = 0.obs; + RxList>> inspectionList = RxList([ + Resource>.success( + PaginationModel(results: ["s", "b", "c", "d"]), + ), + ]); + RxList>> inactiveInspectionList = RxList([ + Resource>.success( + PaginationModel(results: ["s", "b", "c", "d"]), + ), + ]); + + RxInt expandedIndex = RxInt(-1); + + late TabController tabController; + + RxInt selectedTabIndex = 0.obs; + + RxInt activeStepperIndex = 0.obs; + + PageController pageController = PageController(initialPage: 0); + + //step1 + + TextEditingController nameOfThePoultryFarmUnit = TextEditingController(); + + //step2 + RxInt sanitaryConditionOfTheHallIndex = (-1).obs; + RxInt ventilationStatusIndex = (-1).obs; + RxInt beddingStatusIndex = (-1).obs; + RxInt waterQualityIndex = (-1).obs; + RxInt fuelTypeIndex = (-1).obs; + RxInt sampleTypeIndex = (-1).obs; + + //step3 + RxInt grainQualityInputIndex = (-1).obs; + RxInt generatorOperatingStatusIndex = (-1).obs; + RxInt workerContractStatusIndex = (-1).obs; + RxInt newBeneficiaryRequestIndex = (-1).obs; + + //step4 + RxInt inspectorConclusionIndex = (-1).obs; + TextEditingController inspectorConclusionDescriptionController = + TextEditingController(); + + @override + void onReady() { + super.onReady(); + + activeStepperIndex.listen((value) { + pageController.animateToPage( + value, + duration: Duration(milliseconds: 300), + curve: Curves.linear, + ); + }); + } + + @override + void onClose() { + // TODO: implement onClose + super.onClose(); + } + + void toggleExpanded(int index) { + expandedIndex.value = expandedIndex.value == index ? -1 : index; + } + + void changeSegmentIndex(int index) { + if (index == selectedSegmentIndex.value) { + return; + } + expandedIndex.value = -1; + selectedSegmentIndex.value = index; + } + + void changeTab(int index) { + if (index == selectedTabIndex.value) { + return; + } + selectedTabIndex.value = index; + } + + void clearForm() { + nameOfThePoultryFarmUnit.clear(); + activeStepperIndex.value = 0; + selectedTabIndex.value = 0; + } + + void setSanitaryConditionOfTheHallIndex(int index) { + sanitaryConditionOfTheHallIndex.value = + index == sanitaryConditionOfTheHallIndex.value ? -1 : index; + } + + void setFuelTypeIndex(int index) { + fuelTypeIndex.value = index == fuelTypeIndex.value ? -1 : index; + } + + void setVentilationStatusIndex(int index) { + ventilationStatusIndex.value = index == ventilationStatusIndex.value + ? -1 + : index; + } + + void setBeddingStatusIndex(int index) { + beddingStatusIndex.value = index == beddingStatusIndex.value ? -1 : index; + } + + void setWaterQualityIndex(int index) { + waterQualityIndex.value = index == waterQualityIndex.value ? -1 : index; + } + + void setSampleTypeIndex(int index) { + sampleTypeIndex.value = index == sampleTypeIndex.value ? -1 : index; + } + + void setGrainQualityInputIndex(int index) { + grainQualityInputIndex.value = index == grainQualityInputIndex.value + ? -1 + : index; + } + + void setGeneratorOperatingStatusIndex(int index) { + generatorOperatingStatusIndex.value = + index == generatorOperatingStatusIndex.value ? -1 : index; + } + + void setWorkerContractStatusIndex(int index) { + workerContractStatusIndex.value = index == workerContractStatusIndex.value + ? -1 + : index; + } + + void setNewBeneficiaryRequestIndex(int index) { + newBeneficiaryRequestIndex.value = index == newBeneficiaryRequestIndex.value + ? -1 + : index; + } + + void setInspectorConclusionIndex(int index) { + inspectorConclusionIndex.value = index == inspectorConclusionIndex.value + ? -1 + : index; + } +} diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/view.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/view.dart new file mode 100644 index 0000000..bd30cf3 --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/view.dart @@ -0,0 +1,934 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart'; +import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart'; +import 'package:rasadyar_chicken/presentation/widget/info_card/info_card.dart'; +import 'package:rasadyar_core/core.dart'; + +import '../widgets/cu_bottom_sheet.dart'; +import 'logic.dart'; + +class PoultryFarmInspectionHomePage extends GetView { + const PoultryFarmInspectionHomePage({super.key}); + + @override + Widget build(BuildContext context) { + return ChickenBasePage( + onFilterTap: () { + //TODO + }, + + onSearchTap: () { + //TODO + }, + + onSearchChanged: (data) { + //TODO + }, + backId: poultryFirstKey, + + child: Stack( + fit: StackFit.expand, + children: [ + Positioned.fill( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + infoCards(), + segmentWidget(), + ObxValue((data) { + return data.value == 0 ? activeInspectionWidget() : inactiveInspectionWidget(); + }, controller.selectedSegmentIndex), + ], + ), + ), + + Positioned( + right: 10, + bottom: 90.h, + child: RFab.add( + onPressed: () { + Get.bottomSheet( + addOrEditBottomSheet(controller), + isScrollControlled: true, + ignoreSafeArea: false, + ).then((value) => controller.clearForm()); + }, + ), + ), + ], + ), + ); + } + + Padding infoCards() { + return Padding( + padding: const EdgeInsets.fromLTRB(9, 12, 9, 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + spacing: 8, + children: [ + cardInfo(value: 2225256, description: 'بازرسی شده', color: const Color(0xFFB6DED8)), + cardInfo(value: 2050, description: 'بازرسی نشده', color: const Color(0xFFE9CED7)), + cardInfo(value: 2225256, description: 'عملکرد مناسب', color: const Color(0xFFCFE0FF)), + cardInfo(value: 55225, description: 'عملکرد ضعیف', color: const Color(0xFFF3D6CB)), + ], + ), + ); + } + + Padding segmentWidget() { + return Padding( + padding: const EdgeInsets.fromLTRB(8, 0, 8, 8), + child: Row( + children: [ + Expanded( + child: RSegment( + children: ['بازرسی فعال', 'بایگانی'], + selectedIndex: 0, + borderColor: const Color(0xFFB4B4B4), + selectedBorderColor: AppColor.blueNormal, + selectedBackgroundColor: AppColor.blueLight, + onSegmentSelected: (index) => controller.changeSegmentIndex(index), + backgroundColor: AppColor.whiteGreyNormal, + ), + ), + ], + ), + ); + } + + Widget activeInspectionWidget() { + return Expanded( + child: ObxValue((data) { + return RPaginatedListView( + listType: ListType.separated, + resource: data.first, + hasMore: false, + onLoadMore: () async {}, + padding: EdgeInsets.fromLTRB(8, 8, 8, 80), + itemBuilder: (context, index) { + return ObxValue((val) { + return ExpandableListItem2( + selected: val.value.isEqual(index), + onTap: () => controller.toggleExpanded(index), + index: index, + child: activeinspecitonItemListWidget(), + secondChild: avtiveInspectionItemListExpandedWidget(), + labelColor: AppColor.blueLight, + labelIcon: Assets.vec.checkSquareSvg.path, + labelIconColor: AppColor.mediumGreyDarkHover, + ); + }, controller.expandedIndex); + }, + itemCount: 2, + separatorBuilder: (context, index) => SizedBox(height: 8.h), + ); + }, controller.inspectionList), + ); + } + + Container avtiveInspectionItemListExpandedWidget() { + const farmerName = 'آرمان صادقی'; + const showViolationLabel = true; + const violationLabel = 'پیگیری'; + const breed = 'راس ۳۰۸'; + const ageInDays = '۴۲'; + const growPeriod = 'بهار ۱۴۰۴'; + const licenceNumber = '۱۲۳۴۵۶۷۸'; + const chickVolume = '۲۵,۰۰۰'; + const hallRemain = '۲۳,۴۵۰'; + const losses = '۱,۵۵۰'; + const vetInfo = 'دکتر نرگس مرادی(۰۹۳۵۴۵۶۶۷۷۹)'; + const showReportButton = true; + const reportStatus = 'ارسال تصویر جوجه ریزی فارم'; + final reportColor = AppColor.redDark; + return Container( + padding: EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), + child: Column( + spacing: 8, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text( + farmerName, + textAlign: TextAlign.center, + style: AppFonts.yekan16.copyWith(color: AppColor.greenDark), + ), + Spacer(), + Visibility( + visible: showViolationLabel, + child: Text( + violationLabel, + textAlign: TextAlign.center, + style: AppFonts.yekan10.copyWith(color: AppColor.redDark), + ), + ), + ], + ), + Container( + height: 32, + padding: EdgeInsets.symmetric(horizontal: 8), + decoration: ShapeDecoration( + color: AppColor.blueLight, + shape: RoundedRectangleBorder( + side: BorderSide(width: 1, color: AppColor.blueLightHover), + borderRadius: BorderRadius.circular(8), + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('نژاد:$breed', style: AppFonts.yekan14.copyWith(color: AppColor.textColor)), + Text( + ' سن $ageInDays (روزه)', + style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), + ), + Text( + ' دوره جوجه ریزی:$growPeriod', + style: AppFonts.yekan14.copyWith(color: AppColor.textColor), + ), + ], + ), + ), + buildRow(title: 'شماره مجوز جوجه ریزی', value: licenceNumber), + buildUnitRow(title: 'حجم جوجه ریزی', value: chickVolume, unit: '(قطعه)'), + buildUnitRow(title: 'مانده در سالن', value: hallRemain, unit: '(قطعه)'), + buildUnitRow(title: 'تلفات', value: losses, unit: '(قطعه)'), + buildRow(title: 'دامپزشک فارم', value: vetInfo), + buildRow( + title: 'شرح بازرسی', + value: reportStatus, + titleStyle: AppFonts.yekan14.copyWith(color: reportColor), + valueStyle: AppFonts.yekan14.copyWith(color: reportColor), + ), + Visibility( + visible: showReportButton, + child: RElevated( + text: 'ثبت بازرسی', + isFullWidth: true, + width: 150.w, + height: 40.h, + onPressed: () {}, + textStyle: AppFonts.yekan20.copyWith(color: Colors.white), + backgroundColor: AppColor.greenNormal, + ), + ), + ], + ), + ); + } + + Widget activeinspecitonItemListWidget() { + const farmerName = 'آرمان صادقی'; + const farmerMobile = '۰۹۱۲۱۲۳۴۵۶۷'; + const unitName = 'فارم نمونه آفتاب'; + const unitLicence = 'مجوز ۵۴۲۱-الف'; + return Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + SizedBox(width: 20), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 5, + children: [ + Text( + farmerName, + textAlign: TextAlign.start, + style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal), + ), + Text( + farmerMobile, + textAlign: TextAlign.center, + style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), + ), + ], + ), + ), + Expanded( + flex: 3, + child: Column( + spacing: 5, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + unitName, + textAlign: TextAlign.start, + style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal), + ), + Text( + unitLicence, + textAlign: TextAlign.left, + style: AppFonts.yekan12.copyWith(color: AppColor.bgDark), + ), + ], + ), + ), + Expanded( + flex: 1, + child: Assets.vec.scanSvg.svg( + width: 32.w, + height: 32.h, + colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), + ), + ), + ], + ); + } + + Widget inactiveInspectionWidget() { + return Expanded( + child: ObxValue((data) { + return RPaginatedListView( + listType: ListType.separated, + resource: data.first, + hasMore: false, + onLoadMore: () async {}, + padding: EdgeInsets.fromLTRB(8, 8, 8, 80), + itemBuilder: (context, index) { + return ObxValue((val) { + return ExpandableListItem2( + selected: val.value.isEqual(index), + onTap: () => controller.toggleExpanded(index), + index: index, + child: inActiveinspecitonItemListWidget(), + secondChild: inAvtiveInspectionItemListExpandedWidget(), + labelColor: AppColor.blueLight, + labelIcon: Assets.vec.checkSquareSvg.path, + labelIconColor: AppColor.mediumGreyDarkHover, + ); + }, controller.expandedIndex); + }, + itemCount: 5, + separatorBuilder: (context, index) => SizedBox(height: 8.h), + ); + }, controller.inspectionList), + ); + } + + Widget inActiveinspecitonItemListWidget() { + const farmerName = 'زهرا موسوی'; + const farmerMobile = '۰۹۳۸۸۸۷۷۶۶۵'; + const unitName = 'کشت و پرورش افق سبز'; + const unitLicence = 'مجوز ۷۶۳۲-ج'; + return Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + SizedBox(width: 20), + Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 5, + children: [ + Text( + farmerName, + textAlign: TextAlign.start, + style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal), + ), + Text( + farmerMobile, + textAlign: TextAlign.center, + style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), + ), + ], + ), + ), + Expanded( + flex: 3, + child: Column( + spacing: 5, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + unitName, + textAlign: TextAlign.start, + style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal), + ), + Text( + unitLicence, + textAlign: TextAlign.left, + style: AppFonts.yekan12.copyWith(color: AppColor.bgDark), + ), + ], + ), + ), + Expanded( + flex: 1, + child: Assets.vec.scanSvg.svg( + width: 32.w, + height: 32.h, + colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), + ), + ), + ], + ); + } + + Container inAvtiveInspectionItemListExpandedWidget() { + const farmerName = 'زهرا موسوی'; + const showViolationLabel = false; + const violationLabel = 'عادی'; + const breed = 'کاب ۵۰۰'; + const ageInDays = '۳۵'; + const growPeriod = 'پاییز ۱۴۰۳'; + const licenceNumber = '۸۹۴۵۶۱۲۳'; + const chickVolume = '۱۸,۵۰۰'; + const hallRemain = '۱۷,۹۴۰'; + const losses = '۵۶۰'; + const vetInfo = 'دکتر حمید نادری(۰۹۱۳۴۴۵۵۶۶۷)'; + const reportStatus = 'بازدید تایید شده'; + final reportColor = AppColor.greenNormal; + return Container( + padding: EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), + child: Column( + spacing: 8, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text( + farmerName, + textAlign: TextAlign.center, + style: AppFonts.yekan16.copyWith(color: AppColor.greenDark), + ), + Spacer(), + Visibility( + visible: showViolationLabel, + child: Text( + violationLabel, + textAlign: TextAlign.center, + style: AppFonts.yekan10.copyWith(color: AppColor.redDark), + ), + ), + ], + ), + Container( + height: 32, + padding: EdgeInsets.symmetric(horizontal: 8), + decoration: ShapeDecoration( + color: AppColor.blueLight, + shape: RoundedRectangleBorder( + side: BorderSide(width: 1, color: AppColor.blueLightHover), + borderRadius: BorderRadius.circular(8), + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('نژاد:$breed', style: AppFonts.yekan14.copyWith(color: AppColor.textColor)), + Text( + ' سن $ageInDays (روزه)', + style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), + ), + Text( + ' دوره جوجه ریزی:$growPeriod', + style: AppFonts.yekan14.copyWith(color: AppColor.textColor), + ), + ], + ), + ), + buildRow(title: 'شماره مجوز جوجه ریزی', value: licenceNumber), + buildUnitRow(title: 'حجم جوجه ریزی', value: chickVolume, unit: '(قطعه)'), + buildUnitRow(title: 'مانده در سالن', value: hallRemain, unit: '(قطعه)'), + buildUnitRow(title: 'تلفات', value: losses, unit: '(قطعه)'), + buildRow(title: 'دامپزشک فارم', value: vetInfo), + buildRow( + title: 'شرح بازرسی', + value: reportStatus, + titleStyle: AppFonts.yekan14.copyWith(color: reportColor), + valueStyle: AppFonts.yekan14.copyWith(color: reportColor), + ), + ROutlinedElevated( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 4, + children: [ + Assets.vec.excelDownloadSvg.svg( + width: 24.w, + height: 24.h, + colorFilter: ColorFilter.mode(AppColor.greenDark, BlendMode.srcIn), + ), + + Text( + 'مشاهده جزییات ', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.greenDark), + ), + ], + ), + borderColor: AppColor.greenDark, + onPressed: () { + Get.bottomSheet(detailsWidget(), isScrollControlled: true, isDismissible: true); + }, + ), + ], + ), + ); + } + + Widget detailsWidget() { + return BaseBottomSheet( + height: Get.height * 0.8, + child: Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + children: [ + Row( + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 10), + child: Text( + 'جزییات', + style: AppFonts.yekan18Bold.copyWith(color: AppColor.iconColor), + ), + ), + ], + ), + Divider(color: AppColor.blackLightHover, height: 1, thickness: 1), + ObxValue((data) { + return tabBarWidget( + ['اطلاعات', 'پاییش سلامت', 'زیرساخت', 'مستندات'], + controller.selectedTabIndex.value, + (index) => controller.changeTab(index), + ); + }, controller.selectedTabIndex), + + ObxValue((data) { + switch (data.value) { + case 0: + return infoTable(); + case 1: + return healthTable(); + case 2: + return infrastructureTable(); + case 3: + return documentsTable(); + default: + return infoTable(); + } + }, controller.selectedTabIndex), + ], + ), + ), + + // Expanded در سطح بالاتر + ], + ), + ); + } + + Container infoTable() { + return Container( + height: Get.height, + width: Get.width, + child: Column( + children: [ + SizedBox(height: 10), + Row( + children: [ + Text('مشخصات کلی', style: AppFonts.yekan16Bold.copyWith(color: AppColor.iconColor)), + ], + ), + SizedBox(height: 10), + + Container( + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), + child: Column( + children: [ + rTableRow(title: 'نام واحد مرغداری', value: 'لذیذ'), + rTableRow(title: 'کد یکتا / شناسه واحد', value: '2541415'), + rTableRow(title: 'نام مالک / بهره‌بردار', value: 'مرغداری احمدی'), + rTableRow(title: 'موجودی سوخت اضطراری', value: '200 لیتر'), + + rTableRow(title: 'شهر/تعاونی', value: 'خرم آباد/تعاونی خرم آباد'), + + rTableRow(title: 'شماره تلفن واحد', value: '021-12345678'), + rTableRow(title: 'دامپزشک فارم', value: 'dd dd (05218569685)'), + + rTableRow(title: 'سالن', value: '2'), + rTableRow(title: 'تاریخ ثبت جوجه ریزی', value: '1402/09/19 (10:12)'), + rTableRow(title: 'شهر/تعاونی', value: 'خرم آباد/تعاونی خرم آباد'), + + rTableRow(title: 'شماره تلفن واحد', value: '021-12345678'), + rTableRow(title: 'دامپزشک فارم', value: 'dd dd (05218569685)'), + + rTableRow(title: 'سالن', value: '2'), + rTableRow(title: 'تاریخ ثبت جوجه ریزی', value: '1402/09/19 (10:12)'), + ], + ), + ), + ], + ), + ); + } + + Row rTableRow({String? title, String? value}) { + return Row( + children: [ + Expanded( + flex: 1, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 9, vertical: 11), + alignment: Alignment.centerRight, + decoration: BoxDecoration( + color: AppColor.bgLight2, + border: Border(bottom: BorderSide(color: AppColor.blackLightHover, width: 1)), + ), + child: Text( + title ?? '', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.iconColor), + ), + ), + ), + Expanded( + flex: 1, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 9, vertical: 11), + alignment: Alignment.centerRight, + decoration: BoxDecoration( + border: Border(bottom: BorderSide(color: AppColor.blackLightHover, width: 1)), + ), + child: Text( + value ?? '', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor), + ), + ), + ), + ], + ); + } + + Widget tabBarWidget(List tabs, int selectedIndex, Function(int) onTabSelected) { + return SizedBox( + height: 38.h, + width: Get.width, + child: Stack( + fit: StackFit.expand, + children: [ + Positioned( + right: 0, + top: 0, + bottom: 0, + child: Row( + children: [ + ...tabs.map( + (tab) => GestureDetector( + onTap: () => onTabSelected(tabs.indexOf(tab)), + behavior: HitTestBehavior.opaque, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 11), + decoration: BoxDecoration( + border: tab == tabs[selectedIndex] + ? Border(bottom: BorderSide(color: AppColor.blueNormalOld, width: 3)) + : null, + ), + child: Text( + tab, + style: AppFonts.yekan12Bold.copyWith( + color: tab == tabs[selectedIndex] + ? AppColor.blueNormalOld + : AppColor.mediumGrey, + ), + ), + ), + ), + ), + ], + ), + ), + + Positioned( + bottom: 0, + left: 0, + right: 0, + child: Divider(color: AppColor.blackLightHover, height: 1, thickness: 1), + ), + ], + ), + ); + } + + Widget healthTable() { + return Container( + height: Get.height, + width: Get.width, + child: Column( + children: [ + SizedBox(height: 10), + Row( + children: [ + Text('پاییش سلامت', style: AppFonts.yekan16Bold.copyWith(color: AppColor.iconColor)), + ], + ), + SizedBox(height: 10), + + Container( + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), + child: Column( + children: [ + rTableRow(title: 'نام واحد مرغداری', value: 'لذیذ'), + rTableRow(title: 'کد یکتا / شناسه واحد', value: '2541415'), + rTableRow(title: 'نام مالک / بهره‌بردار', value: 'مرغداری احمدی'), + rTableRow(title: 'موجودی سوخت اضطراری', value: '200 لیتر'), + + rTableRow(title: 'شهر/تعاونی', value: 'خرم آباد/تعاونی خرم آباد'), + + rTableRow(title: 'شماره تلفن واحد', value: '021-12345678'), + rTableRow(title: 'دامپزشک فارم', value: 'dd dd (05218569685)'), + + rTableRow(title: 'سالن', value: '2'), + rTableRow(title: 'تاریخ ثبت جوجه ریزی', value: '1402/09/19 (10:12)'), + rTableRow(title: 'شهر/تعاونی', value: 'خرم آباد/تعاونی خرم آباد'), + + rTableRow(title: 'شماره تلفن واحد', value: '021-12345678'), + rTableRow(title: 'دامپزشک فارم', value: 'dd dd (05218569685)'), + + rTableRow(title: 'سالن', value: '2'), + rTableRow(title: 'تاریخ ثبت جوجه ریزی', value: '1402/09/19 (10:12)'), + ], + ), + ), + ], + ), + ); + } + + Widget infrastructureTable() { + return Container( + height: Get.height, + width: Get.width, + child: Column( + children: [ + SizedBox(height: 10), + Row( + children: [ + Text('زیرساخت', style: AppFonts.yekan16Bold.copyWith(color: AppColor.iconColor)), + ], + ), + SizedBox(height: 10), + + Container( + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), + child: Column( + children: [ + rTableRow(title: 'نام واحد مرغداری', value: 'لذیذ'), + rTableRow(title: 'کد یکتا / شناسه واحد', value: '2541415'), + rTableRow(title: 'نام مالک / بهره‌بردار', value: 'مرغداری احمدی'), + rTableRow(title: 'موجودی سوخت اضطراری', value: '200 لیتر'), + + rTableRow(title: 'شهر/تعاونی', value: 'خرم آباد/تعاونی خرم آباد'), + + rTableRow(title: 'شماره تلفن واحد', value: '021-12345678'), + rTableRow(title: 'دامپزشک فارم', value: 'dd dd (05218569685)'), + + rTableRow(title: 'سالن', value: '2'), + rTableRow(title: 'تاریخ ثبت جوجه ریزی', value: '1402/09/19 (10:12)'), + rTableRow(title: 'شهر/تعاونی', value: 'خرم آباد/تعاونی خرم آباد'), + + rTableRow(title: 'شماره تلفن واحد', value: '021-12345678'), + rTableRow(title: 'دامپزشک فارم', value: 'dd dd (05218569685)'), + + rTableRow(title: 'سالن', value: '2'), + rTableRow(title: 'تاریخ ثبت جوجه ریزی', value: '1402/09/19 (10:12)'), + ], + ), + ), + ], + ), + ); + } + + Widget documentsTable() { + return Container( + height: Get.height, + width: Get.width, + child: Column( + children: [ + SizedBox(height: 10), + Row( + children: [ + Text('مستندات', style: AppFonts.yekan16Bold.copyWith(color: AppColor.iconColor)), + ], + ), + + SizedBox(height: 16), + + Container( + height: 135.h, + width: Get.width, + decoration: BoxDecoration( + color: AppColor.bgLight, + borderRadius: BorderRadius.circular(8), + ), + child: Column( + spacing: 10, + children: [ + SizedBox( + height: 100.h, + width: Get.width, + child: ListView.separated( + itemCount: 10, + padding: EdgeInsets.symmetric(horizontal: 12), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + return Container( + width: 80.w, + height: 80.h, + decoration: BoxDecoration( + color: Color(0x33000000), + image: DecorationImage( + fit: BoxFit.cover, + image: NetworkImage("https://picsum.photos/150/150?random=$index"), + ), + + borderRadius: BorderRadius.circular(8), + ), + ); + }, + separatorBuilder: (context, index) => SizedBox(width: 10), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 18), + child: Row( + children: [ + Text( + '200 فارم در این سالن تخمین زده شده است.', + textAlign: TextAlign.right, + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor), + ), + ], + ), + ), + ], + ), + ), + + SizedBox(height: 16), + + Container( + height: 135.h, + width: Get.width, + decoration: BoxDecoration( + color: AppColor.bgLight, + borderRadius: BorderRadius.circular(8), + ), + child: Column( + spacing: 10, + children: [ + SizedBox( + height: 100.h, + width: Get.width, + child: ListView.separated( + itemCount: 10, + padding: EdgeInsets.symmetric(horizontal: 12), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + return Container( + width: 80.w, + height: 80.h, + decoration: BoxDecoration( + color: Color(0x33000000), + image: DecorationImage( + fit: BoxFit.cover, + image: NetworkImage( + "https://picsum.photos/150/150?random=${index * 2 + 1}", + ), + ), + + borderRadius: BorderRadius.circular(8), + ), + ); + }, + separatorBuilder: (context, index) => SizedBox(width: 10), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 18), + child: Row( + children: [ + Text( + 'انبار نهاده ها', + textAlign: TextAlign.right, + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor), + ), + ], + ), + ), + ], + ), + ), + + SizedBox(height: 16), + + Container( + height: 135.h, + width: Get.width, + decoration: BoxDecoration( + color: AppColor.bgLight, + borderRadius: BorderRadius.circular(8), + ), + child: Column( + spacing: 10, + children: [ + SizedBox( + height: 100.h, + width: Get.width, + child: ListView.separated( + itemCount: 10, + padding: EdgeInsets.symmetric(horizontal: 12), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + return Container( + width: 80.w, + height: 80.h, + decoration: BoxDecoration( + color: Color(0x33000000), + image: DecorationImage( + fit: BoxFit.cover, + image: NetworkImage( + "https://picsum.photos/150/150?random=${index * 3 + 1}", + ), + ), + + borderRadius: BorderRadius.circular(8), + ), + ); + }, + separatorBuilder: (context, index) => SizedBox(width: 10), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 18), + child: Row( + children: [ + Text( + 'تلفات', + textAlign: TextAlign.right, + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/poultry_farm_inspection.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/poultry_farm_inspection.dart new file mode 100644 index 0000000..fa5363a --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/poultry_farm_inspection.dart @@ -0,0 +1,2 @@ +export 'home/logic.dart'; +export 'home/view.dart'; diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/card_info.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/card_info.dart new file mode 100644 index 0000000..3f55e48 --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/card_info.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/home/logic.dart'; +import 'package:rasadyar_core/core.dart'; + +Widget farmInfoWidget({ + required PoultryFarmInspectionHomeLogic controller, + required String title, + required Widget child, + EdgeInsets? padding, +}) { + return Stack( + clipBehavior: Clip.none, + children: [ + Positioned.fill( + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + border: Border.all(width: 0.50, color: AppColor.mediumGrey), + ), + + padding: + padding ?? EdgeInsets.symmetric(horizontal: 12.w, vertical: 11.h), + child: child, + ), + ), + Positioned( + top: -17, + right: 7, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 5.h), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + border: Border.all(width: 0.50, color: AppColor.mediumGrey), + ), + child: Text( + title, + style: AppFonts.yekan14.copyWith(color: AppColor.iconColor), + ), + ), + ), + ], + ); +} + +Widget cardInfo({required Widget child, EdgeInsets? padding}) { + return Container( + width: Get.width, + padding: padding ?? EdgeInsets.symmetric(horizontal: 12.w, vertical: 14.h), + decoration: BoxDecoration( + color: AppColor.bgLight, + + borderRadius: BorderRadius.circular(8), + border: Border.all(width: 1, color: AppColor.blackLight), + ), + child: child, + ); +} diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/cu_bottom_sheet.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/cu_bottom_sheet.dart new file mode 100644 index 0000000..f08329d --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/cu_bottom_sheet.dart @@ -0,0 +1,224 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_core/core.dart'; +import '../home/logic.dart'; +import 'step1_page.dart'; +import 'step2_page.dart'; +import 'step3_page.dart'; +import 'step4_page.dart'; +import 'step5_page.dart'; + +Widget addOrEditBottomSheet(PoultryFarmInspectionHomeLogic controller) { + List pages = [ + step1Page(controller), + step2Page(controller), + step3Page(controller), + step4Page(controller), + step5Page(controller), + ]; + + return BaseBottomSheet( + height: Get.height, + rootChild: Column( + children: [ + ObxValue((data) { + return stepper(activeStep: data.value); + }, controller.activeStepperIndex), + Expanded( + child: PageView.builder( + physics: const NeverScrollableScrollPhysics(), + reverse: true, + controller: controller.pageController, + itemBuilder: (context, index) => pages[index], + ), + ), + + ObxValue((data) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Row( + spacing: 16, + children: [ + Expanded( + child: RElevated( + height: 40.h, + backgroundColor: AppColor.greenNormal, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + + children: [ + Icon(Icons.arrow_back_ios, color: Colors.white), + + Text('ادامه'), + ], + ), + onPressed: () { + if (controller.activeStepperIndex.value <4) { + controller.activeStepperIndex.value++; + } + }, + ), + ), + Expanded( + child: ROutlinedElevated( + borderColor: AppColor.error, + height: 40.h, + child: Text('برگشت'), + enabled: controller.activeStepperIndex.value > 0, + onPressed: () { + if (controller.activeStepperIndex.value > 0) { + controller.activeStepperIndex.value--; + } + }, + ), + ), + ], + ), + ); + }, controller.activeStepperIndex), + ], + ), + ); +} + +class stepper extends StatelessWidget { + const stepper({super.key, required this.activeStep}); + final int activeStep; + + @override + Widget build(BuildContext context) { + return Directionality( + textDirection: TextDirection.ltr, + child: SizedBox( + height: 24, + width: Get.width, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: activeStep >= 0 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + shape: BoxShape.circle, + ), + width: 24.w, + height: 24.h, + child: Text( + '1', + textAlign: TextAlign.center, + style: AppFonts.yekan16.copyWith( + color: activeStep >= 0 ? Colors.white : AppColor.iconColor, + ), + ), + ), + Expanded( + child: Divider( + color: activeStep >= 1 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + thickness: 8, + ), + ), + Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: activeStep >= 1 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + shape: BoxShape.circle, + ), + width: 24.w, + height: 24.h, + child: Text( + '2', + textAlign: TextAlign.center, + style: AppFonts.yekan16.copyWith( + color: activeStep >= 1 ? Colors.white : AppColor.iconColor, + ), + ), + ), + Expanded( + child: Divider( + color: activeStep >= 2 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + thickness: 8, + ), + ), + Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: activeStep >= 2 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + shape: BoxShape.circle, + ), + width: 24.w, + height: 24.h, + child: Text( + '3', + textAlign: TextAlign.center, + style: AppFonts.yekan16.copyWith( + color: activeStep >= 2 ? Colors.white : AppColor.iconColor, + ), + ), + ), + Expanded( + child: Divider( + color: activeStep >= 3 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + thickness: 8, + ), + ), + Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: activeStep >= 3 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + shape: BoxShape.circle, + ), + width: 24.w, + height: 24.h, + child: Text( + '4', + textAlign: TextAlign.center, + style: AppFonts.yekan16.copyWith( + color: activeStep >= 3 ? Colors.white : AppColor.iconColor, + ), + ), + ), + Expanded( + child: Divider( + color: activeStep >= 4 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + thickness: 8, + ), + ), + Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: activeStep >= 4 + ? AppColor.greenNormalHover + : AppColor.whiteNormalActive, + shape: BoxShape.circle, + ), + width: 24.w, + height: 24.h, + child: Text( + '5', + textAlign: TextAlign.center, + style: AppFonts.yekan16.copyWith( + color: activeStep >= 3 ? Colors.white : AppColor.iconColor, + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step1_page.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step1_page.dart new file mode 100644 index 0000000..6740746 --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step1_page.dart @@ -0,0 +1,166 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart'; +import 'package:rasadyar_core/core.dart'; + +import '../home/logic.dart'; + +Widget step1Page(PoultryFarmInspectionHomeLogic controller) { + return SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( + children: [ + SizedBox(height: 25.h), + + Container( + height: 610.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'اطلاعات پایه واحد', + child: basicUnitInformation(controller), + ), + ), + + SizedBox(height: 30.h), + + Container( + height: 400.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'اطلاعات جوجه ریزی', + child: hatchingInformation(controller), + ), + ), + SizedBox(height: 16.h), + ], + ), + ); +} + +Column basicUnitInformation(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نام واحد مرغداری', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'کد یکتا / شناسه واحد', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نام مالک / بهره‌بردار', + filled: true, + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success(['مالک', 'بهره‌بردار', 'مشاور', 'دیگر']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'نوع مالکیت'), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'کد ملی بهره‌بردار', + filled: true, + filledColor: AppColor.bgLight, + ), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'شماره تماس بهره‌بردار', + filled: true, + filledColor: AppColor.bgLight, + ), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'ظرفیت اسمی سالن‌ها', + filled: true, + filledColor: AppColor.bgLight, + ), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نوع سیستم پرورش', + filled: true, + filledColor: AppColor.bgLight, + ), + + RElevated( + isFullWidth: true, + height: 40.h, + backgroundColor: AppColor.greenNormal, + onPressed: () {}, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 4, + children: [ + Icon(Icons.my_location_rounded, color: Colors.white, size: 24), + Text('دریافت موقعیت جغرافیایی', style: AppFonts.yekan14.copyWith(color: Colors.white)), + ], + ), + ), + ], + ); +} + +Column hatchingInformation(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تاریخ جوجه ریزی', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد جوجه‌ریزی اولیه', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'منبع تهیه جوجه', + filled: true, + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success(['سرابی', 'پژدر', 'روتوایلر', 'دیگر']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'نوع نژاد'), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'گرید جوجه', + filled: true, + filledColor: AppColor.bgLight, + ), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میانگین وزن جوجه در ورود', + filled: true, + filledColor: AppColor.bgLight, + ), + ], + ); +} diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step2_page.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step2_page.dart new file mode 100644 index 0000000..f09c7d3 --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step2_page.dart @@ -0,0 +1,499 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart'; +import 'package:rasadyar_core/core.dart'; + +import '../home/logic.dart'; + +Widget step2Page(PoultryFarmInspectionHomeLogic controller) { + return SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( + children: [ + SizedBox(height: 35.h), + + Container( + height: 760.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'وضعیت عمومی سالن', + child: generalConditionOfTheHall(controller), + ), + ), + + SizedBox(height: 30.h), + + Container( + height: 430.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'تلفات', + child: casualtiesInformation(controller), + ), + ), + SizedBox(height: 24.h), + + Container( + height: 450.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'بیماری‌ها و وضعیت سلامت', + child: diseasesAndHealthInformation(controller), + ), + ), + ], + ), + ); +} + +Column generalConditionOfTheHall(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 12), + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all(width: 1, color: AppColor.blackLightHover), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text( + 'تعداد موجود فعلی', + style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + ), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت بهداشتی سالن', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + formChips( + selectedIndex: data.value, + index: 0, + label: 'عالی', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + formChips( + selectedIndex: data.value, + index: 1, + label: 'خوب', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + formChips( + selectedIndex: data.value, + index: 2, + label: 'متوسط', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + formChips( + selectedIndex: data.value, + index: 3, + label: 'ضعیف', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + ], + ); + }, controller.sanitaryConditionOfTheHallIndex), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text('وضعیت تهویه', style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2)), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setVentilationStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'خشک', + ), + formChips( + onTap: (index) => controller.setVentilationStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'نیمه‌مرطوب', + ), + formChips( + onTap: (index) => controller.setVentilationStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'مرطوب', + ), + ], + ); + }, controller.ventilationStatusIndex), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text('وضعیت بستر', style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2)), + + ObxValue((data) { + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + spacing: 8, + children: [ + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'خشک', + ), + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'نیمه‌مرطوب', + ), + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'مرطوب', + ), + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'نیازمند اصلاح', + ), + ], + ), + ); + }, controller.beddingStatusIndex), + ], + ), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'دمای سالن', + filled: true, + filledColor: AppColor.bgLight, + maxLines: 1, + minLines: 1, + keyboardType: TextInputType.number, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'کیفیت آب مصرفی', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setWaterQualityIndex(index), + selectedIndex: data.value, + index: 0, + label: 'چاه', + ), + formChips( + onTap: (index) => controller.setWaterQualityIndex(index), + selectedIndex: data.value, + index: 1, + label: 'شهری', + ), + formChips( + onTap: (index) => controller.setWaterQualityIndex(index), + selectedIndex: data.value, + index: 2, + label: 'تصفیه‌شده', + ), + ], + ); + }, controller.waterQualityIndex), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'کیفیت آب مصرفی', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + formChips( + onTap: (index) => controller.setFuelTypeIndex(index), + selectedIndex: data.value, + index: 0, + label: 'گازوییل', + ), + formChips( + onTap: (index) => controller.setFuelTypeIndex(index), + selectedIndex: data.value, + index: 1, + label: 'بنزین', + ), + formChips( + onTap: (index) => controller.setFuelTypeIndex(index), + selectedIndex: data.value, + index: 2, + label: 'گاز', + ), + formChips( + selectedIndex: data.value, + index: 3, + label: 'نفت', + onTap: (index) => controller.setFuelTypeIndex(index), + ), + ], + ); + }, controller.fuelTypeIndex), + ], + ), + ), + ], + ); +} + +ChoiceChip formChips({ + required int selectedIndex, + required int index, + required String label, + required Function(int) onTap, +}) { + return ChoiceChip( + selectedColor: AppColor.green1Normal, + labelStyle: index == selectedIndex + ? AppFonts.yekan14Bold.copyWith(color: Colors.white) + : AppFonts.yekan14.copyWith(color: AppColor.textColor), + surfaceTintColor: Colors.white, + checkmarkColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: index == selectedIndex + ? BorderSide.none + : BorderSide(width: 1, color: AppColor.blackLightHover), + ), + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 6), + + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + label: Text(label), + selected: index == selectedIndex, + onSelected: (value) => onTap(index), + ); +} + +Column casualtiesInformation(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد تلفات عادی دوره', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تلفات غیرعادی', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'منبع تهیه جوجه', + filled: true, + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success(['بیماری', 'قطعی برق', 'استرس گرمایی', 'مشکلات دانه']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'علت احتمالی تلفات غیرعادی'), + ), + + ResourceOverlayDropdown( + items: Resource.success(['انجام نشد', 'انجام شد']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'نمونه‌برداری انجام‌شده'), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text('نوع نمونه', style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2)), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 0, + label: 'رنده', + ), + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 1, + label: 'لاشه', + ), + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 2, + label: 'ترکیبی', + ), + ], + ); + }, controller.sampleTypeIndex), + ], + ), + ), + ], + ); +} + +Column diseasesAndHealthInformation(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + ResourceOverlayDropdown( + items: Resource.success(['بیماری', 'قطعی برق', 'استرس گرمایی', 'مشکلات دانه']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'وجود علائم بیماری در گله'), + ), + + ResourceOverlayDropdown( + items: Resource.success(['انجام نشد', 'انجام شد']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'نوع بیماری تشخیص داده‌شده / مشکوک'), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تاریخ واکسیناسیون‌های انجام‌شده', + filled: true, + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success([ + 'واکسن 1', + 'واکسن 2', + 'واکسن 3', + 'واکسن 4', + 'واکسن 5', + 'واکسن 6', + 'واکسن 7', + 'واکسن 8', + 'واکسن 9', + 'واکسن 10', + ]), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'نوع واکسن'), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'شرکت تولیدکننده', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نام مسئول فنی بهداشتی', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نام مسئول فنی نظام مهندسی', + filled: true, + filledColor: AppColor.bgLight, + ), + ], + ); +} diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step3_page.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step3_page.dart new file mode 100644 index 0000000..eba203d --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step3_page.dart @@ -0,0 +1,719 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart'; +import 'package:rasadyar_core/core.dart'; + +import '../home/logic.dart'; + +Widget step3Page(PoultryFarmInspectionHomeLogic controller) { + return SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( + children: [ + SizedBox(height: 35.h), + + Container( + height: 410.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'نهاده و خوراک', + child: agriculturalInput(controller), + ), + ), + + SizedBox(height: 30.h), + + Container( + height: 650.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'زیرساخت و انرژی', + child: infrastructureAndEnergy(controller), + ), + ), + SizedBox(height: 24.h), + + Container( + height: 405.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'نیروی انسانی', + child: humanResources(controller), + ), + ), + SizedBox(height: 24.h), + + Container( + height: 440.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'تسهیلات و حمایت‌ها', + child: facilitiesAndSupport(controller), + ), + ), + ], + ), + ); +} + +Column agriculturalInput2(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all(width: 1, color: AppColor.blackLightHover), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text( + 'تعداد موجود فعلی', + style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + ), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت بهداشتی سالن', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + formChips( + selectedIndex: data.value, + index: 0, + label: 'عالی', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + formChips( + selectedIndex: data.value, + index: 1, + label: 'خوب', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + formChips( + selectedIndex: data.value, + index: 2, + label: 'متوسط', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + formChips( + selectedIndex: data.value, + index: 3, + label: 'ضعیف', + onTap: (index) => controller.setSanitaryConditionOfTheHallIndex(index), + ), + ], + ); + }, controller.sanitaryConditionOfTheHallIndex), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text('وضعیت تهویه', style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2)), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setVentilationStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'خشک', + ), + formChips( + onTap: (index) => controller.setVentilationStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'نیمه‌مرطوب', + ), + formChips( + onTap: (index) => controller.setVentilationStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'مرطوب', + ), + ], + ); + }, controller.ventilationStatusIndex), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text('وضعیت بستر', style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2)), + + ObxValue((data) { + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + spacing: 8, + children: [ + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'خشک', + ), + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'نیمه‌مرطوب', + ), + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'مرطوب', + ), + formChips( + onTap: (index) => controller.setBeddingStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'نیازمند اصلاح', + ), + ], + ), + ); + }, controller.beddingStatusIndex), + ], + ), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'دمای سالن', + filled: true, + filledColor: AppColor.bgLight, + maxLines: 1, + minLines: 1, + keyboardType: TextInputType.number, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'کیفیت آب مصرفی', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setWaterQualityIndex(index), + selectedIndex: data.value, + index: 0, + label: 'چاه', + ), + formChips( + onTap: (index) => controller.setWaterQualityIndex(index), + selectedIndex: data.value, + index: 1, + label: 'شهری', + ), + formChips( + onTap: (index) => controller.setWaterQualityIndex(index), + selectedIndex: data.value, + index: 2, + label: 'تصفیه‌شده', + ), + ], + ); + }, controller.waterQualityIndex), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'کیفیت آب مصرفی', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + formChips( + onTap: (index) => controller.setFuelTypeIndex(index), + selectedIndex: data.value, + index: 0, + label: 'گازوییل', + ), + formChips( + onTap: (index) => controller.setFuelTypeIndex(index), + selectedIndex: data.value, + index: 1, + label: 'بنزین', + ), + formChips( + onTap: (index) => controller.setFuelTypeIndex(index), + selectedIndex: data.value, + index: 2, + label: 'گاز', + ), + formChips( + selectedIndex: data.value, + index: 3, + label: 'نفت', + onTap: (index) => controller.setFuelTypeIndex(index), + ), + ], + ); + }, controller.fuelTypeIndex), + ], + ), + ), + ], + ); +} + +ChoiceChip formChips({ + required int selectedIndex, + required int index, + required String label, + required Function(int) onTap, +}) { + return ChoiceChip( + selectedColor: AppColor.green1Normal, + labelStyle: index == selectedIndex + ? AppFonts.yekan14Bold.copyWith(color: Colors.white) + : AppFonts.yekan14.copyWith(color: AppColor.textColor), + surfaceTintColor: Colors.white, + checkmarkColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: index == selectedIndex + ? BorderSide.none + : BorderSide(width: 1, color: AppColor.blackLightHover), + ), + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 6), + + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + label: Text(label), + selected: index == selectedIndex, + onSelected: (value) => onTap(index), + ); +} + +Column infrastructureAndEnergy(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نوع ژنراتور', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'ظرفیت (KVA)', + filled: true, + filledColor: AppColor.bgLight, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت عملکرد ژنراتور', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setGeneratorOperatingStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'سالم', + ), + formChips( + onTap: (index) => controller.setGeneratorOperatingStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'نیمه‌سالم', + ), + formChips( + onTap: (index) => controller.setGeneratorOperatingStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'معیوب', + ), + ], + ); + }, controller.generatorOperatingStatusIndex), + ], + ), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان موجودی سوخت اضطراری (لیتر)', + filled: true, + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success(['بیماری', 'قطعی برق', 'استرس گرمایی', 'مشکلات دانه']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'علت احتمالی تلفات غیرعادی'), + ), + + ResourceOverlayDropdown( + items: Resource.success(['ندارد', 'دارد']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'سابقه قطعی برق دوره جاری'), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد تلفات', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'مدت قطعی', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'توضیحات تکمیلی', + filled: true, + maxLines: 3, + minLines: 3, + filledColor: AppColor.bgLight, + ), + ], + ); +} + +Column agriculturalInput(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده مصرفی تا روز بازدید (کیلوگرم)', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده موجود در انبار', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده خریداری‌شده و حمل‌نشده از بازارگاه', + filled: true, + filledColor: AppColor.bgLight, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text('کیفیت دانه', style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2)), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 0, + label: 'خوب', + ), + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 1, + label: 'متوسط', + ), + formChips( + onTap: (index) => controller.setGrainQualityInputIndex(index), + selectedIndex: data.value, + index: 2, + label: 'ضعیف', + ), + ], + ); + }, controller.grainQualityInputIndex), + ], + ), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'فرمول دانه (در صورت ارائه)', + filled: true, + minLines: 3, + maxLines: 3, + filledColor: AppColor.bgLight, + ), + ], + ); +} + +Column humanResources(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد شاغل', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد بومی', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد غیر بومی', + filled: true, + maxLines: 3, + minLines: 3, + filledColor: AppColor.bgLight, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت قرارداد کارگران', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'دائم', + ), + formChips( + onTap: (index) => controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'موقت', + ), + formChips( + onTap: (index) => controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'روزمزدی', + ), + ], + ); + }, controller.workerContractStatusIndex), + ], + ), + ), + + ResourceOverlayDropdown( + items: Resource.success(['آموزش‌ ندیده است', 'آموزش‌ دیده است']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'آموزش‌دیده در حوزه بهداشت و امنیت زیستی'), + ), + ], + ); +} + +Column facilitiesAndSupport(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تسهیلات دریافتی فعال', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نوع تسهیلات', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'مبلغ', + filled: true, + + filledColor: AppColor.bgLight, + ), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'سال دریافت', + filled: true, + + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success(['دریافت نشده', 'دریافت شده']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'وضعیت بازپرداخت'), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'درخواست جدید بهره‌بردار', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 0, + label: 'نهاده', + ), + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 1, + label: 'تسهیلات', + ), + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 2, + label: 'واکسن', + ), + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 3, + label: 'تجهیزات', + ), + ], + ), + ); + }, controller.newBeneficiaryRequestIndex), + ], + ), + ), + ], + ); +} diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step4_page.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step4_page.dart new file mode 100644 index 0000000..8c2dadc --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step4_page.dart @@ -0,0 +1,487 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart'; +import 'package:rasadyar_core/core.dart'; + +import '../home/logic.dart'; + +Widget step4Page(PoultryFarmInspectionHomeLogic controller) { + return SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( + children: [ + SizedBox(height: 35.h), + + Container( + height: 455.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'مستندات', + child: documents(controller), + ), + ), + + SizedBox(height: 30.h), + + Container( + height: 220.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'جمع‌بندی بازرس', + child: inspectorConclusion(controller), + ), + ), + SizedBox(height: 24.h), + ], + ), + ); +} + +Column documents(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SizedBox(height: 10.h), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all(width: 1, color: AppColor.blackLightHover), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text( + 'ثبت عکس سالن (حداقل ۳ زاویه) *', + style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + ), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all(width: 1, color: AppColor.blackLightHover), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text( + 'ثبت عکس انبار نهاده‌ها', + style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + ), + ], + ), + ), + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all(width: 1, color: AppColor.blackLightHover), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text('ثبت عکس تلفات', style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight)), + ], + ), + ), + ], + ); +} + +ChoiceChip formChips({ + required int selectedIndex, + required int index, + required String label, + required Function(int) onTap, +}) { + return ChoiceChip( + selectedColor: AppColor.green1Normal, + labelStyle: index == selectedIndex + ? AppFonts.yekan14Bold.copyWith(color: Colors.white) + : AppFonts.yekan14.copyWith(color: AppColor.textColor), + surfaceTintColor: Colors.white, + checkmarkColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: index == selectedIndex + ? BorderSide.none + : BorderSide(width: 1, color: AppColor.blackLightHover), + ), + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 6), + + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + label: Text(label), + selected: index == selectedIndex, + onSelected: (value) => onTap(index), + ); +} + +Column inspectorConclusion(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت کلی واحد', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setInspectorConclusionIndex(index), + selectedIndex: data.value, + index: 0, + label: 'تایید شده', + ), + formChips( + onTap: (index) => controller.setInspectorConclusionIndex(index), + selectedIndex: data.value, + index: 1, + label: 'نیازمند اصلاح', + ), + formChips( + onTap: (index) => controller.setInspectorConclusionIndex(index), + selectedIndex: data.value, + index: 2, + label: 'پرریسک', + ), + ], + ), + ); + }, controller.inspectorConclusionIndex), + ], + ), + ), + + RTextField( + controller: controller.inspectorConclusionDescriptionController, + hintText: 'توصیه‌ها / اخطارها / اقدامات اصلاحی ...', + hintStyle: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + maxLines: 3, + minLines: 3, + filled: true, + filledColor: AppColor.bgLight, + ), + ], + ); +} + +Column agriculturalInput(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده مصرفی تا روز بازدید (کیلوگرم)', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده موجود در انبار', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده خریداری‌شده و حمل‌نشده از بازارگاه', + filled: true, + filledColor: AppColor.bgLight, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text('کیفیت دانه', style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2)), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 0, + label: 'خوب', + ), + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 1, + label: 'متوسط', + ), + formChips( + onTap: (index) => controller.setGrainQualityInputIndex(index), + selectedIndex: data.value, + index: 2, + label: 'ضعیف', + ), + ], + ); + }, controller.grainQualityInputIndex), + ], + ), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'فرمول دانه (در صورت ارائه)', + filled: true, + minLines: 3, + maxLines: 3, + filledColor: AppColor.bgLight, + ), + ], + ); +} + +Column humanResources(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد شاغل', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد بومی', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد غیر بومی', + filled: true, + maxLines: 3, + minLines: 3, + filledColor: AppColor.bgLight, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت قرارداد کارگران', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'دائم', + ), + formChips( + onTap: (index) => controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'موقت', + ), + formChips( + onTap: (index) => controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'روزمزدی', + ), + ], + ); + }, controller.workerContractStatusIndex), + ], + ), + ), + + ResourceOverlayDropdown( + items: Resource.success(['آموزش‌ ندیده است', 'آموزش‌ دیده است']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'آموزش‌دیده در حوزه بهداشت و امنیت زیستی'), + ), + ], + ); +} + +Column facilitiesAndSupport(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تسهیلات دریافتی فعال', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نوع تسهیلات', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'مبلغ', + filled: true, + + filledColor: AppColor.bgLight, + ), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'سال دریافت', + filled: true, + + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success(['دریافت نشده', 'دریافت شده']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'وضعیت بازپرداخت'), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'درخواست جدید بهره‌بردار', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 0, + label: 'نهاده', + ), + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 1, + label: 'تسهیلات', + ), + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 2, + label: 'واکسن', + ), + formChips( + onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 3, + label: 'تجهیزات', + ), + ], + ); + }, controller.newBeneficiaryRequestIndex), + ], + ), + ), + ], + ); +} diff --git a/packages/chicken/lib/presentation/pages/poultry_science/genocide/view.dart b/packages/chicken/lib/presentation/pages/poultry_science/genocide/view.dart index 3b89fe7..be6f035 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/genocide/view.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/genocide/view.dart @@ -136,7 +136,7 @@ class GenocidePage extends GetView { ), Text( - 'تعداد:${item.quantity.separatedByComma ?? '-'} (قطعه)', + 'تعداد:${item.quantity.separatedByComma} (قطعه)', style: AppFonts.yekan14.copyWith(color: AppColor.textColor), ), ], @@ -149,7 +149,7 @@ class GenocidePage extends GetView { value: (item.freeSaleInProvince ?? false) ? 'آزاد' : 'دولتی ', ), buildRow(title: 'نوع کشتار ', value: controller.getKillType(item)), - buildRow(title: 'درخواست', value: controller.getRequestType(item) ?? 'N/A'), + buildRow(title: 'درخواست', value: controller.getRequestType(item)), buildRow(title: 'میانگین وزنی', value: '${(item.indexWeight)} (کیلوگرم)'), buildRow(title: 'قیمت مرغدار', value: '${item.amount.separatedByComma} (ریال)'), @@ -231,7 +231,7 @@ class GenocidePage extends GetView { ), Text( - 'تعداد:${item.quantity.separatedByComma ?? '-'} (قطعه)', + 'تعداد:${item.quantity.separatedByComma} (قطعه)', style: AppFonts.yekan14.copyWith(color: AppColor.textColor), ), ], diff --git a/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart b/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart index e20d239..07149c4 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart @@ -465,7 +465,7 @@ class InspectionPoultrySciencePage extends GetView { title: item.title, vecIcon: item.icon, onTap: () async { - Get.toNamed(item.route, id: poultryFirstKey); }, ); diff --git a/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart b/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart index 53f576f..c12b9c0 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart @@ -4,7 +4,6 @@ import 'package:rasadyar_chicken/data/di/chicken_di.dart'; import 'package:rasadyar_chicken/data/repositories/poultry_science/poultry_science_repository.dart'; import 'package:rasadyar_chicken/presentation/pages/common/profile/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/home/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/view.dart'; import 'package:rasadyar_chicken/presentation/routes/pages.dart'; import 'package:rasadyar_chicken/presentation/routes/routes.dart'; import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart'; diff --git a/packages/chicken/lib/presentation/pages/steward/buy_in_province/logic.dart b/packages/chicken/lib/presentation/pages/steward/buy_in_province/logic.dart index f3c64f9..28f5734 100644 --- a/packages/chicken/lib/presentation/pages/steward/buy_in_province/logic.dart +++ b/packages/chicken/lib/presentation/pages/steward/buy_in_province/logic.dart @@ -83,7 +83,6 @@ class BuyInProvinceLogic extends GetxController { } Future onRefresh() async { - final isWaiting = selectedSegmentIndex.value == 0; await rootLogic.onRefresh(); await Future.wait([buyWaitingLogic.getWaitingArrivals(), buyAllLogic.getAllArrivals()]); } diff --git a/packages/chicken/lib/presentation/pages/steward/buy_in_province_all/logic.dart b/packages/chicken/lib/presentation/pages/steward/buy_in_province_all/logic.dart index b734c2a..0c23aa9 100644 --- a/packages/chicken/lib/presentation/pages/steward/buy_in_province_all/logic.dart +++ b/packages/chicken/lib/presentation/pages/steward/buy_in_province_all/logic.dart @@ -42,11 +42,7 @@ class BuyInProvinceAllLogic extends GetxController { }); } - @override - void onClose() { - // TODO: implement onClose - super.onClose(); - } + Future getAllArrivals([bool isLoadingMore = false]) async { if (isLoadingMore) { @@ -71,8 +67,8 @@ class BuyInProvinceAllLogic extends GetxController { search: 'filter', role: 'Steward', value: searchedValue.value, - fromDate: fromDateFilter.value?.toDateTime(), - toDate: toDateFilter.value?.toDateTime(), + fromDate: fromDateFilter.value.toDateTime(), + toDate: toDateFilter.value.toDateTime(), ), ), onSuccess: (res) async { diff --git a/packages/chicken/lib/presentation/pages/steward/buy_in_province_waiting/logic.dart b/packages/chicken/lib/presentation/pages/steward/buy_in_province_waiting/logic.dart index b537576..a8dab30 100644 --- a/packages/chicken/lib/presentation/pages/steward/buy_in_province_waiting/logic.dart +++ b/packages/chicken/lib/presentation/pages/steward/buy_in_province_waiting/logic.dart @@ -48,10 +48,7 @@ class BuyInProvinceWaitingLogic extends GetxController { }); } - @override - void onClose() { - super.onClose(); - } + void setSearchValue(String? data) { searchedValue.value = data?.trim(); @@ -80,8 +77,8 @@ class BuyInProvinceWaitingLogic extends GetxController { search: 'filter', role: 'Steward', value: searchedValue.value, - fromDate: fromDateFilter.value?.toDateTime(), - toDate: toDateFilter.value?.toDateTime(), + fromDate: fromDateFilter.value.toDateTime(), + toDate: toDateFilter.value.toDateTime(), ), ), onSuccess: (res) async { diff --git a/packages/chicken/lib/presentation/pages/steward/buy_out_of_province/view.dart b/packages/chicken/lib/presentation/pages/steward/buy_out_of_province/view.dart index de73035..3b25625 100644 --- a/packages/chicken/lib/presentation/pages/steward/buy_out_of_province/view.dart +++ b/packages/chicken/lib/presentation/pages/steward/buy_out_of_province/view.dart @@ -428,7 +428,7 @@ class BuyOutOfProvincePage extends GetView { enabled: controller.isSubmitButtonEnabled.value, onPressed: isOnEdit ? () async { - var res = await controller.editStewardPurchaseOutOfProvince(); + await controller.editStewardPurchaseOutOfProvince(); Get.back(); } : () async { diff --git a/packages/chicken/lib/presentation/pages/steward/home/logic.dart b/packages/chicken/lib/presentation/pages/steward/home/logic.dart index d5864cd..b0ef74a 100644 --- a/packages/chicken/lib/presentation/pages/steward/home/logic.dart +++ b/packages/chicken/lib/presentation/pages/steward/home/logic.dart @@ -1,6 +1,5 @@ import 'package:rasadyar_chicken/data/models/response/bar_information/bar_information.dart'; import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart'; -import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart'; import 'package:rasadyar_chicken/presentation/pages/steward/root/logic.dart'; import 'package:rasadyar_core/core.dart'; diff --git a/packages/chicken/lib/presentation/pages/steward/root/logic.dart b/packages/chicken/lib/presentation/pages/steward/root/logic.dart index e6fc6fa..1d6bd06 100644 --- a/packages/chicken/lib/presentation/pages/steward/root/logic.dart +++ b/packages/chicken/lib/presentation/pages/steward/root/logic.dart @@ -225,9 +225,6 @@ class StewardRootLogic extends GetxController { final nestedKeyId = getNestedKey(); GlobalKey? currentNestedKey = Get.nestedKey(nestedKeyId); - final currentRoute = currentNestedKey?.currentState; - - fLog("onPopScopTaped ==> ${currentNestedKey?.currentState?.canPop()}"); if (currentNestedKey?.currentState?.canPop() == true) { iLog(currentNestedKey?.currentState?.canPop()); iLog(currentNestedKey?.currentContext); diff --git a/packages/chicken/lib/presentation/pages/steward/root/view.dart b/packages/chicken/lib/presentation/pages/steward/root/view.dart index 5fa415b..ea2af0f 100644 --- a/packages/chicken/lib/presentation/pages/steward/root/view.dart +++ b/packages/chicken/lib/presentation/pages/steward/root/view.dart @@ -25,8 +25,9 @@ class StewardRootPage extends GetView { onGenerateRoute: (settings) { final page = ChickenPages.pages.firstWhere( (e) => e.name == settings.name, - orElse: () => - ChickenPages.pages.firstWhere((e) => e.name == ChickenRoutes.buySteward), + orElse: () => ChickenPages.pages.firstWhere( + (e) => e.name == ChickenRoutes.buySteward, + ), ); return buildRouteFromGetPage(page); @@ -37,8 +38,9 @@ class StewardRootPage extends GetView { onGenerateRoute: (settings) { final page = ChickenPages.pages.firstWhere( (e) => e.name == settings.name, - orElse: () => - ChickenPages.pages.firstWhere((e) => e.name == ChickenRoutes.saleSteward), + orElse: () => ChickenPages.pages.firstWhere( + (e) => e.name == ChickenRoutes.saleSteward, + ), ); return buildRouteFromGetPage(page); @@ -46,15 +48,18 @@ class StewardRootPage extends GetView { ), Navigator( key: Get.nestedKey(stewardThirdKey), - onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[2]), + onGenerateRoute: (settings) => + GetPageRoute(page: () => controller.pages[2]), ), Navigator( key: Get.nestedKey(stewardFourthKey), - onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[3]), + onGenerateRoute: (settings) => + GetPageRoute(page: () => controller.pages[3]), ), Navigator( key: Get.nestedKey(stewardFifthKey), - onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[4]), + onGenerateRoute: (settings) => + GetPageRoute(page: () => controller.pages[4]), ), ], index: data.value, @@ -150,7 +155,10 @@ class StewardRootPage extends GetView { return Container( height: 70, width: Get.width / 2, - decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + ), clipBehavior: Clip.hardEdge, child: Row( children: [ @@ -171,7 +179,9 @@ class StewardRootPage extends GetView { Text( 'بارهای امروز', textAlign: TextAlign.right, - style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), + style: AppFonts.yekan14.copyWith( + color: AppColor.blueNormal, + ), ), ], ), @@ -238,7 +248,9 @@ class StewardRootPage extends GetView { Text( title, textAlign: TextAlign.right, - style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan14.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), ], ), @@ -261,12 +273,16 @@ class StewardRootPage extends GetView { Text( description, textAlign: TextAlign.right, - style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan16.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), Text( unit, textAlign: TextAlign.center, - style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan12.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), ], ), @@ -311,17 +327,23 @@ class StewardRootPage extends GetView { Text( title, textAlign: TextAlign.right, - style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan14.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), Text( description, textAlign: TextAlign.right, - style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan16.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), Text( unit, textAlign: TextAlign.center, - style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan12.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), ], ), @@ -369,14 +391,18 @@ class StewardRootPage extends GetView { padding: EdgeInsets.all(4), decoration: ShapeDecoration( color: const Color(0xFFBECDFF), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), ), child: Container( width: 40, height: 40, decoration: ShapeDecoration( color: AppColor.blueNormal, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), ), child: SvgGenImage.vec(iconPath).svg( width: 24, @@ -386,7 +412,10 @@ class StewardRootPage extends GetView { ), ), ), - Text(title, style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal)), + Text( + title, + style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal), + ), ], ); } @@ -403,16 +432,24 @@ class StewardRootPage extends GetView { padding: EdgeInsets.all(4), decoration: ShapeDecoration( color: const Color(0xFFD9F7F0), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), ), child: Assets.vec.messageAddSvg.svg( width: 40, height: 40, - colorFilter: ColorFilter.mode(AppColor.greenNormal, BlendMode.srcIn), + colorFilter: ColorFilter.mode( + AppColor.greenNormal, + BlendMode.srcIn, + ), fit: BoxFit.cover, ), ), - Text('افزودن', style: AppFonts.yekan10.copyWith(color: AppColor.greenDarkHover)), + Text( + 'افزودن', + style: AppFonts.yekan10.copyWith(color: AppColor.greenDarkHover), + ), ], ); } @@ -559,7 +596,9 @@ class StewardRootPage extends GetView { child: Text( title, textAlign: TextAlign.right, - style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), + style: AppFonts.yekan14.copyWith( + color: AppColor.darkGreyDarkHover, + ), ), ), Flexible( @@ -567,7 +606,9 @@ class StewardRootPage extends GetView { child: Text( value, textAlign: TextAlign.center, - style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), + style: AppFonts.yekan14.copyWith( + color: AppColor.darkGreyDarkHover, + ), ), ), ], @@ -593,7 +634,9 @@ class StewardRootPage extends GetView { Text( 'اطلاعات ارسالی', textAlign: TextAlign.right, - style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal), + style: AppFonts.yekan16Bold.copyWith( + color: AppColor.blueNormal, + ), ), const SizedBox(height: 12), buildRow( diff --git a/packages/chicken/lib/presentation/pages/steward/sales_in_province/view.dart b/packages/chicken/lib/presentation/pages/steward/sales_in_province/view.dart index 79b72a4..e6d2286 100644 --- a/packages/chicken/lib/presentation/pages/steward/sales_in_province/view.dart +++ b/packages/chicken/lib/presentation/pages/steward/sales_in_province/view.dart @@ -474,7 +474,7 @@ class SalesInProvincePage extends GetView { Expanded( child: ObxValue((data) { return Text( - date.value?.formatCompactDate() ?? Jalali.now().formatCompactDate(), + date.value.formatCompactDate(), textAlign: TextAlign.center, style: AppFonts.yekan16.copyWith(color: AppColor.lightGreyNormalActive), ); diff --git a/packages/chicken/lib/presentation/pages/steward/sales_in_province/widgets/cu_sale_in_provience.dart b/packages/chicken/lib/presentation/pages/steward/sales_in_province/widgets/cu_sale_in_provience.dart index 0d27602..eee86cc 100644 --- a/packages/chicken/lib/presentation/pages/steward/sales_in_province/widgets/cu_sale_in_provience.dart +++ b/packages/chicken/lib/presentation/pages/steward/sales_in_province/widgets/cu_sale_in_provience.dart @@ -46,7 +46,7 @@ Widget addOrEditBottomSheet(SalesInProvinceLogic controller, {bool isEditMode = ); }, borderColor: AppColor.darkGreyLight, - initText: (data.value ?? Jalali.now()).formatCompactDate(), + initText: (data.value).formatCompactDate(), ); }, controller.fromDateFilter), Visibility( diff --git a/packages/chicken/lib/presentation/pages/steward/sales_out_of_province/view.dart b/packages/chicken/lib/presentation/pages/steward/sales_out_of_province/view.dart index ed43283..5db4b13 100644 --- a/packages/chicken/lib/presentation/pages/steward/sales_out_of_province/view.dart +++ b/packages/chicken/lib/presentation/pages/steward/sales_out_of_province/view.dart @@ -36,7 +36,8 @@ class SalesOutOfProvincePage extends GetView { ObxValue((data) { return RPaginatedListView( - onLoadMore: () async => controller.getOutProvinceSales(true), + onLoadMore: () async => + controller.getOutProvinceSales(true), hasMore: data.value.data?.next != null, listType: ListType.separated, resource: data.value, @@ -70,19 +71,27 @@ class SalesOutOfProvincePage extends GetView { children: [ RFab.add( onPressed: () { - Get.bottomSheet(addOrEditSaleBottomSheet(), isScrollControlled: true).then(( - value, - ) { + Get.bottomSheet( + addOrEditSaleBottomSheet(), + isScrollControlled: true, + ).then((value) { controller.clearSaleForm(); }); }, ), Spacer(), RFab( - icon: Icon(CupertinoIcons.person_add_solid, color: Colors.white, size: 35.w), + icon: Icon( + CupertinoIcons.person_add_solid, + color: Colors.white, + size: 35.w, + ), backgroundColor: AppColor.blueNormal, onPressed: () { - Get.toNamed(ChickenRoutes.salesOutOfProvinceBuyerSteward, id: stewardSecondKey); + Get.toNamed( + ChickenRoutes.salesOutOfProvinceBuyerSteward, + id: stewardSecondKey, + ); }, ), SizedBox(width: 25), @@ -176,7 +185,10 @@ class SalesOutOfProvincePage extends GetView { itemListExpandedWidget(StewardFreeSaleBar item, int index) { return Container( padding: EdgeInsets.symmetric(horizontal: 8), - decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + ), child: Column( spacing: 8, children: [ @@ -208,12 +220,16 @@ class SalesOutOfProvincePage extends GetView { children: [ Text( item.date?.toJalali.formatter.wN ?? 'ندارد', - style: AppFonts.yekan14.copyWith(color: AppColor.textColor), + style: AppFonts.yekan14.copyWith( + color: AppColor.textColor, + ), ), Text( '${item.date?.toJalali.formatter.d} ${item.date?.toJalali.formatter.mN ?? 'ندارد'}', - style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), + style: AppFonts.yekan14.copyWith( + color: AppColor.blueNormal, + ), ), ], ), @@ -230,7 +246,10 @@ class SalesOutOfProvincePage extends GetView { ], ), ), - buildRow(title: 'مشخصات خریدار', value: item.buyer?.fullname ?? 'ندارد'), + buildRow( + title: 'مشخصات خریدار', + value: item.buyer?.fullname ?? 'ندارد', + ), buildRow(title: 'تلفن خریدار', value: item.buyer?.mobile ?? 'ندارد'), buildRow(title: 'نام واحد', value: item.buyer?.unitName ?? 'ندارد'), buildRow( @@ -248,7 +267,10 @@ class SalesOutOfProvincePage extends GetView { value: item.productionDate?.toJalali.formatCompactDate() ?? 'ندارد', ), buildRow(title: 'انبار فروش', value: '${item.quota?.faTitle}'), - buildRow(title: 'کد قرنطینه ', value: item.clearanceCode ?? 'بدون کد'), + buildRow( + title: 'کد قرنطینه ', + value: item.clearanceCode ?? 'بدون کد', + ), buildRow( title: 'حجم تقریبی لاشه ', @@ -261,7 +283,9 @@ class SalesOutOfProvincePage extends GetView { children: [ Text( 'کد احراز', - style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), + style: AppFonts.yekan14.copyWith( + color: AppColor.darkGreyDarkHover, + ), ), Spacer(), RElevated( @@ -271,7 +295,9 @@ class SalesOutOfProvincePage extends GetView { backgroundColor: AppColor.blueDarkHover, text: 'ارسال کد', onPressed: () { - Get.bottomSheet(bottomSendOtpSheetSellCode(item)).then((value) { + Get.bottomSheet(bottomSendOtpSheetSellCode(item)).then(( + value, + ) { controller.otpCode.value = ''; controller.otpCodeSell.clear(); }); @@ -280,7 +306,10 @@ class SalesOutOfProvincePage extends GetView { ], ) : buildRow(title: 'کد احراز ', value: '${item.registerCode}'), - buildRow(title: 'کد قرنطینه ', value: item.clearanceCode ?? 'بدون کد'), + buildRow( + title: 'کد قرنطینه ', + value: item.clearanceCode ?? 'بدون کد', + ), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -338,7 +367,9 @@ class SalesOutOfProvincePage extends GetView { children: [ Text( isOnEdit ? 'ویرایش فروش' : 'افزودن فروش', - style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal), + style: AppFonts.yekan16Bold.copyWith( + color: AppColor.blueNormal, + ), ), _productDropDown(), @@ -360,7 +391,9 @@ class SalesOutOfProvincePage extends GetView { label: 'تاریخ', onTap: () { Get.bottomSheet( - modalDatePicker((value) => controller.setSaleDate(value)), + modalDatePicker( + (value) => controller.setSaleDate(value), + ), ); }, borderColor: AppColor.darkGreyLight, @@ -375,7 +408,10 @@ class SalesOutOfProvincePage extends GetView { decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), - border: Border.all(color: AppColor.darkGreyLight, width: 1), + border: Border.all( + color: AppColor.darkGreyLight, + width: 1, + ), ), child: Stack( fit: StackFit.expand, @@ -383,7 +419,10 @@ class SalesOutOfProvincePage extends GetView { clipBehavior: Clip.none, children: [ Positioned( - child: Container(color: Colors.white, child: Text("انبار")), + child: Container( + color: Colors.white, + child: Text("انبار"), + ), top: -10, right: 8, ), @@ -404,7 +443,10 @@ class SalesOutOfProvincePage extends GetView { child: Row( children: [ Radio(value: 1), - Text('دولتی', style: AppFonts.yekan14), + Text( + 'دولتی', + style: AppFonts.yekan14, + ), ], ), ), @@ -418,7 +460,10 @@ class SalesOutOfProvincePage extends GetView { child: Row( children: [ Radio(value: 2), - Text('آزاد', style: AppFonts.yekan14), + Text( + 'آزاد', + style: AppFonts.yekan14, + ), ], ), ), @@ -435,7 +480,8 @@ class SalesOutOfProvincePage extends GetView { Obx(() { return MonthlyDataCalendar( label: 'تاریخ تولید گوشت', - selectedDate: controller.productionDate.value?.formatCompactDate(), + selectedDate: controller.productionDate.value + ?.formatCompactDate(), onDateSelect: (value) { controller.setProductionDate(value); }, @@ -445,7 +491,10 @@ class SalesOutOfProvincePage extends GetView { ); }), - Visibility(visible: isOnEdit == false, child: _buyerWidget()), + Visibility( + visible: isOnEdit == false, + child: _buyerWidget(), + ), RTextField( controller: controller.saleWeightController, @@ -500,7 +549,10 @@ class SalesOutOfProvincePage extends GetView { decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), - border: Border.all(color: AppColor.darkGreyLight, width: 1), + border: Border.all( + color: AppColor.darkGreyLight, + width: 1, + ), ), child: Stack( fit: StackFit.expand, @@ -508,7 +560,10 @@ class SalesOutOfProvincePage extends GetView { clipBehavior: Clip.none, children: [ Positioned( - child: Container(color: Colors.white, child: Text("فروش")), + child: Container( + color: Colors.white, + child: Text("فروش"), + ), top: -10, right: 8, ), @@ -522,7 +577,12 @@ class SalesOutOfProvincePage extends GetView { children: [ Expanded( child: GestureDetector( - onTap: (controller.broadcastPrice.value?.active ?? false) + onTap: + (controller + .broadcastPrice + .value + ?.active ?? + false) ? () { controller.saleType.value = 2; } @@ -532,13 +592,20 @@ class SalesOutOfProvincePage extends GetView { Radio( value: 1, enabled: - controller.broadcastPrice.value?.active ?? false, + controller + .broadcastPrice + .value + ?.active ?? + false, ), Text( 'قیمت مصوب', style: AppFonts.yekan14.copyWith( color: - (controller.broadcastPrice.value?.active ?? + (controller + .broadcastPrice + .value + ?.active ?? false) ? AppColor.textColor : AppColor.labelTextColor, @@ -557,7 +624,10 @@ class SalesOutOfProvincePage extends GetView { child: Row( children: [ Radio(value: 2), - Text('قیمت آزاد', style: AppFonts.yekan14), + Text( + 'قیمت آزاد', + style: AppFonts.yekan14, + ), ], ), ), @@ -584,7 +654,8 @@ class SalesOutOfProvincePage extends GetView { filled: true, readonly: data.value == 1, onChanged: (p0) { - controller.pricePerKilo.value = int.tryParse(p0.clearComma) ?? 0; + controller.pricePerKilo.value = + int.tryParse(p0.clearComma) ?? 0; }, keyboardType: TextInputType.number, label: 'قیمت هر کیلو (ريال)', @@ -639,7 +710,9 @@ class SalesOutOfProvincePage extends GetView { text: isOnEdit ? 'ویرایش' : 'ثبت', onPressed: data.value ? () async { - var res = isOnEdit ? await controller.editSale() : await controller.createSale(); + isOnEdit + ? await controller.editSale() + : await controller.createSale(); } : null, height: 40, @@ -684,7 +757,10 @@ class SalesOutOfProvincePage extends GetView { Text(item?.name ?? 'انتخاب محصول'), Spacer(), ObxValue((data) { - return Visibility(visible: data.value != null, child: Text('موجودی: $data')); + return Visibility( + visible: data.value != null, + child: Text('موجودی: $data'), + ); }, controller.remainingStock), ], ), @@ -716,15 +792,23 @@ class SalesOutOfProvincePage extends GetView { Assets.vec.calendarSvg.svg( width: 24, height: 24, - colorFilter: const ColorFilter.mode(AppColor.bgDark, BlendMode.srcIn), + colorFilter: const ColorFilter.mode( + AppColor.bgDark, + BlendMode.srcIn, + ), + ), + Text( + title ?? 'تاریخ', + style: AppFonts.yekan16.copyWith(color: AppColor.bgDark), ), - Text(title ?? 'تاریخ', style: AppFonts.yekan16.copyWith(color: AppColor.bgDark)), Expanded( child: ObxValue((data) { return Text( date.value.formatCompactDate(), textAlign: TextAlign.center, - style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDark), + style: AppFonts.yekan16.copyWith( + color: AppColor.darkGreyDark, + ), ); }, date), ), @@ -806,7 +890,9 @@ class SalesOutOfProvincePage extends GetView { height: 40.h, decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), - border: borderColor != null ? Border.all(width: 1, color: borderColor) : null, + border: borderColor != null + ? Border.all(width: 1, color: borderColor) + : null, ), clipBehavior: Clip.hardEdge, child: Row( @@ -868,12 +954,16 @@ class SalesOutOfProvincePage extends GetView { maxLines: 1, textDirection: TextDirection.ltr, overflow: TextOverflow.ellipsis, - style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan14.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), Text( unit, textAlign: TextAlign.center, - style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive), + style: AppFonts.yekan12.copyWith( + color: AppColor.mediumGreyDarkActive, + ), ), ], ), diff --git a/packages/chicken/lib/presentation/pages/steward/sales_out_of_province_buyers/logic.dart b/packages/chicken/lib/presentation/pages/steward/sales_out_of_province_buyers/logic.dart index 45624e4..4a441b4 100644 --- a/packages/chicken/lib/presentation/pages/steward/sales_out_of_province_buyers/logic.dart +++ b/packages/chicken/lib/presentation/pages/steward/sales_out_of_province_buyers/logic.dart @@ -175,7 +175,7 @@ class SalesOutOfProvinceBuyersLogic extends GetxController { mobile: buyerPhoneController.text, role: 'Steward', ); - final res = await rootLogic.chickenRepository.createOutProvinceCarcassesBuyer( + await rootLogic.chickenRepository.createOutProvinceCarcassesBuyer( token: rootLogic.tokenService.accessToken.value!, body: buyer, ); diff --git a/packages/chicken/lib/presentation/routes/pages.dart b/packages/chicken/lib/presentation/routes/pages.dart index 03c1924..22a1194 100644 --- a/packages/chicken/lib/presentation/routes/pages.dart +++ b/packages/chicken/lib/presentation/routes/pages.dart @@ -2,6 +2,7 @@ import 'package:rasadyar_chicken/presentation/pages/common/auth/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/common/auth/view.dart'; import 'package:rasadyar_chicken/presentation/pages/common/role/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/common/role/view.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/poultry_farm_inspection.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/active_hatching/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/active_hatching/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/farm/logic.dart'; @@ -69,7 +70,6 @@ sealed class ChickenPages { page: () => HomePage(), middlewares: [AuthMiddleware()], binding: BindingsBuilder(() { - Get.put(HomeLogic()); Get.lazyPut(() => BaseLogic()); }), @@ -223,5 +223,16 @@ sealed class ChickenPages { }), ), //endregion + + //region Poultry Farm Inspection + GetPage( + name: ChickenRoutes.poultryFarmInspectionHome, + page: () => PoultryFarmInspectionHomePage(), + binding: BindingsBuilder(() { + Get.lazyPut(() => PoultryFarmInspectionHomeLogic()); + Get.lazyPut(() => BaseLogic(), fenix: true); + }), + ), + //endregion ]; } diff --git a/packages/chicken/lib/presentation/routes/routes.dart b/packages/chicken/lib/presentation/routes/routes.dart index fe4e827..9049f91 100644 --- a/packages/chicken/lib/presentation/routes/routes.dart +++ b/packages/chicken/lib/presentation/routes/routes.dart @@ -35,7 +35,11 @@ sealed class ChickenRoutes { static const genocidePoultryScience = '$_poultryScience/genocidePoultryScience'; static const killingRegistrationPoultryScience = '$genocidePoultryScience/KillingRegistration'; + //endregion + //region poultry Farm Inspection + static const _poultryFarmInspection = '$_base/poultryFarmInspection'; + static const poultryFarmInspectionHome = '$_poultryFarmInspection/Home'; //endregion } diff --git a/packages/chicken/lib/presentation/widget/info_card/info_card.dart b/packages/chicken/lib/presentation/widget/info_card/info_card.dart new file mode 100644 index 0000000..ca520fe --- /dev/null +++ b/packages/chicken/lib/presentation/widget/info_card/info_card.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_core/core.dart'; + +Widget cardInfo({required int value, required String description, required Color color}) { + return Container( + width: 90.w, + height: 53.h, + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(8), + border: Border.all(width: 0.50, color: const Color.fromARGB(54, 169, 169, 169)), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + spacing: 4, + children: [ + Text( + value.separatedByCommaFa, + style: AppFonts.yekan13Bold.copyWith(color: AppColor.textColor), + ), + Text(description, style: AppFonts.yekan10.copyWith(color: AppColor.textColor)), + ], + ), + ); +} diff --git a/packages/chicken/pubspec.yaml b/packages/chicken/pubspec.yaml index fd61c05..4babdf4 100644 --- a/packages/chicken/pubspec.yaml +++ b/packages/chicken/pubspec.yaml @@ -1,9 +1,9 @@ name: rasadyar_chicken description: A starting point for Dart libraries or applications. -version: 1.3.18 +version: 1.3.20 environment: - sdk: ^3.9.2 + sdk: ^3.10.0 dependencies: diff --git a/packages/chicken/test/data/data_source/remote/auth/auth_remote_imp_test.dart b/packages/chicken/test/data/data_source/remote/auth/auth_remote_imp_test.dart index e616636..bb1fa65 100644 --- a/packages/chicken/test/data/data_source/remote/auth/auth_remote_imp_test.dart +++ b/packages/chicken/test/data/data_source/remote/auth/auth_remote_imp_test.dart @@ -229,14 +229,14 @@ void main() { data: expectedUserInfo, statusCode: 200, requestOptions: RequestOptions( - path: 'https://userbackend.rasadyaar.ir/api/send_otp/', + path: 'https://userbackend.rasadyar.com/api/send_otp/', ), ), ); when( () => mockDioRemote.post( - 'https://userbackend.rasadyaar.ir/api/send_otp/', + 'https://userbackend.rasadyar.com/api/send_otp/', data: {"mobile": phoneNumber, "state": ""}, fromJson: any(named: 'fromJson'), headers: any(named: 'headers'), @@ -250,7 +250,7 @@ void main() { expect(result, equals(expectedUserInfo)); verify( () => mockDioRemote.post( - 'https://userbackend.rasadyaar.ir/api/send_otp/', + 'https://userbackend.rasadyar.com/api/send_otp/', data: {"mobile": phoneNumber, "state": ""}, fromJson: UserInfoModel.fromJson, headers: {'Content-Type': 'application/json'}, @@ -267,14 +267,14 @@ void main() { data: null, statusCode: 404, requestOptions: RequestOptions( - path: 'https://userbackend.rasadyaar.ir/api/send_otp/', + path: 'https://userbackend.rasadyar.com/api/send_otp/', ), ), ); when( () => mockDioRemote.post( - 'https://userbackend.rasadyaar.ir/api/send_otp/', + 'https://userbackend.rasadyar.com/api/send_otp/', data: {"mobile": phoneNumber, "state": ""}, fromJson: any(named: 'fromJson'), headers: any(named: 'headers'), @@ -288,7 +288,7 @@ void main() { expect(result, isNull); verify( () => mockDioRemote.post( - 'https://userbackend.rasadyaar.ir/api/send_otp/', + 'https://userbackend.rasadyar.com/api/send_otp/', data: {"mobile": phoneNumber, "state": ""}, fromJson: UserInfoModel.fromJson, headers: {'Content-Type': 'application/json'}, diff --git a/packages/chicken/test/integration/steward_workflow_integration_test.dart b/packages/chicken/test/integration/steward_workflow_integration_test.dart index 9e9d303..58025c8 100644 --- a/packages/chicken/test/integration/steward_workflow_integration_test.dart +++ b/packages/chicken/test/integration/steward_workflow_integration_test.dart @@ -4,27 +4,14 @@ import 'package:rasadyar_chicken/data/data_source/local/chicken_local.dart'; import 'package:rasadyar_chicken/data/data_source/remote/chicken/chicken_remote.dart'; import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.dart'; import 'package:rasadyar_chicken/data/models/request/create_steward_free_bar/create_steward_free_bar.dart'; -import 'package:rasadyar_chicken/data/models/request/steward_free_sale_bar/steward_free_sale_bar_request.dart'; -import 'package:rasadyar_chicken/data/models/request/submit_steward_allocation/submit_steward_allocation.dart'; import 'package:rasadyar_chicken/data/models/response/allocated_made/allocated_made.dart'; -import 'package:rasadyar_chicken/data/models/response/bar_information/bar_information.dart'; import 'package:rasadyar_chicken/data/models/response/broadcast_price/broadcast_price.dart'; -import 'package:rasadyar_chicken/data/models/response/dashboard_kill_house_free_bar/dashboard_kill_house_free_bar.dart'; -import 'package:rasadyar_chicken/data/models/response/guild/guild_model.dart'; import 'package:rasadyar_chicken/data/models/response/guild_profile/guild_profile.dart'; import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart'; -import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart'; -import 'package:rasadyar_chicken/data/models/response/kill_house_poultry/kill_house_poultry.dart'; import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart'; -import 'package:rasadyar_chicken/data/models/response/out_province_carcasses_buyer/out_province_carcasses_buyer.dart'; -import 'package:rasadyar_chicken/data/models/response/roles_products/roles_products.dart'; import 'package:rasadyar_chicken/data/models/response/segmentation_model/segmentation_model.dart'; import 'package:rasadyar_chicken/data/models/response/steward_free_bar/steward_free_bar.dart'; import 'package:rasadyar_chicken/data/models/response/steward_free_bar_dashboard/steward_free_bar_dashboard.dart'; -import 'package:rasadyar_chicken/data/models/response/steward_free_sale_bar/steward_free_sale_bar.dart'; -import 'package:rasadyar_chicken/data/models/response/steward_sales_info_dashboard/steward_sales_info_dashboard.dart'; -import 'package:rasadyar_chicken/data/models/response/user_profile/user_profile.dart'; -import 'package:rasadyar_chicken/data/models/response/waiting_arrival/waiting_arrival.dart'; import 'package:rasadyar_chicken/data/repositories/chicken/chicken_repository_imp.dart'; import 'package:rasadyar_core/core.dart'; diff --git a/packages/core/lib/core.dart b/packages/core/lib/core.dart index 1412fac..b071a46 100644 --- a/packages/core/lib/core.dart +++ b/packages/core/lib/core.dart @@ -73,5 +73,5 @@ export 'utils/logger_utils.dart'; export 'utils/map_utils.dart'; export 'utils/network/network.dart'; export 'utils/route_utils.dart'; -export 'utils/separator_input_formatter.dart'; +export 'utils/text_input_formatter/separator_input_formatter.dart'; export 'utils/utils.dart'; diff --git a/packages/core/lib/presentation/common/app_color.dart b/packages/core/lib/presentation/common/app_color.dart index 1a4e92c..6e61427 100644 --- a/packages/core/lib/presentation/common/app_color.dart +++ b/packages/core/lib/presentation/common/app_color.dart @@ -4,136 +4,319 @@ class AppColor { AppColor._(); //region --- Blue Colors --- - static const Color blueLight = Color(0xFFeaefff); // #eaefff rgb(234, 239, 255) - static const Color blueLightHover = Color(0xFFe0e7ff); // #e0e7ff rgb(224, 231, 255) - static const Color blueLightActive = Color(0xFFbecdff); // #becdff rgb(190, 205, 255) - static const Color blueNormalOld = Color(0xFF2d5fff); // #2d5fff rgb(45, 95, 255) + static const Color blueLight = Color( + 0xFFeaefff, + ); // #eaefff rgb(234, 239, 255) + static const Color blueLightHover = Color( + 0xFFe0e7ff, + ); // #e0e7ff rgb(224, 231, 255) + static const Color blueLightActive = Color( + 0xFFbecdff, + ); // #becdff rgb(190, 205, 255) + static const Color blueNormalOld = Color( + 0xFF2d5fff, + ); // #2d5fff rgb(45, 95, 255) static const Color blueNormal = blueDark; - static const Color blueNormalHover = Color(0xFF2956e6); // #2956e6 rgb(41, 86, 230) - static const Color blueNormalActive = Color(0xFF244ccc); // #244ccc rgb(36, 76, 204) + static const Color blueNormalHover = Color( + 0xFF2956e6, + ); // #2956e6 rgb(41, 86, 230) + static const Color blueNormalActive = Color( + 0xFF244ccc, + ); // #244ccc rgb(36, 76, 204) static const Color blueDark = Color(0xFF2247bf); // #2247bf rgb(34, 71, 191) - static const Color blueDarkHover = Color(0xFF1b3999); // #1b3999 rgb(27, 57, 153) - static const Color blueDarkActive = Color(0xFF142b73); // #142b73 rgb(20, 43, 115) + static const Color blueDarkHover = Color( + 0xFF1b3999, + ); // #1b3999 rgb(27, 57, 153) + static const Color blueDarkActive = Color( + 0xFF142b73, + ); // #142b73 rgb(20, 43, 115) static const Color blueDarker = Color(0xFF102159); // #102159 rgb(16, 33, 89) - static const Color blueFlashing = Color(0xFF6F91FF); // #6F91FF rgb(111, 145, 255) + static const Color blueFlashing = Color( + 0xFF6F91FF, + ); // #6F91FF rgb(111, 145, 255) //endregion //region --- Green Colors --- - static const Color greenLight = Color(0xFFe6faf5); // #e6faf5 rgb(230, 250, 245) - static const Color greenLightHover = Color(0xFFd9f7f0); // #d9f7f0 rgb(217, 247, 240) - static const Color greenLightActive = Color(0xFFb0efdf); // #b0efdf rgb(176, 239, 223) - static const Color greenNormal = Color(0xFF00cc99); // #00cc99 rgb(0, 204, 153) - static const Color greenNormalHover = Color(0xFF00b88a); // #00b88a rgb(0, 184, 138) - static const Color greenNormalActive = Color(0xFF00a37a); // #00a37a rgb(0, 163, 122) + static const Color greenLight = Color( + 0xFFe6faf5, + ); // #e6faf5 rgb(230, 250, 245) + static const Color greenLightHover = Color( + 0xFFd9f7f0, + ); // #d9f7f0 rgb(217, 247, 240) + static const Color greenLightActive = Color( + 0xFFb0efdf, + ); // #b0efdf rgb(176, 239, 223) + static const Color greenNormal = Color( + 0xFF00cc99, + ); // #00cc99 rgb(0, 204, 153) + static const Color greenNormalHover = Color( + 0xFF00b88a, + ); // #00b88a rgb(0, 184, 138) + static const Color greenNormalActive = Color( + 0xFF00a37a, + ); // #00a37a rgb(0, 163, 122) static const Color greenDark = Color(0xFF009973); // #009973 rgb(0, 153, 115) - static const Color greenDarkHover = Color(0xFF007a5c); // #007a5c rgb(0, 122, 92) - static const Color greenDarkActive = Color(0xFF005c45); // #005c45 rgb(0, 92, 69) + static const Color greenDarkHover = Color( + 0xFF007a5c, + ); // #007a5c rgb(0, 122, 92) + static const Color greenDarkActive = Color( + 0xFF005c45, + ); // #005c45 rgb(0, 92, 69) static const Color greenDarker = Color(0xFF004736); // #004736 rgb(0, 71, 54) //endregion //region --- Black Colors --- - static const Color blackLight = Color(0xFFe6e6e6); // #e6e6e6 rgb(230, 230, 230) - static const Color blackLightHover = Color(0xFFd9d9d9); // #d9d9d9 rgb(217, 217, 217) - static const Color blackLightActive = Color(0xFFb0b0b0); // #b0b0b0 rgb(176, 176, 176) + static const Color blackLight = Color( + 0xFFe6e6e6, + ); // #e6e6e6 rgb(230, 230, 230) + static const Color blackLightHover = Color( + 0xFFd9d9d9, + ); // #d9d9d9 rgb(217, 217, 217) + static const Color blackLightActive = Color( + 0xFFb0b0b0, + ); // #b0b0b0 rgb(176, 176, 176) static const Color blackNormal = Color(0xFF000000); // #000000 rgb(0, 0, 0) - static const Color blackNormalHover = Color(0xFF000000); // #000000 rgb(0, 0, 0) - static const Color blackNormalActive = Color(0xFF000000); // #000000 rgb(0, 0, 0) + static const Color blackNormalHover = Color( + 0xFF000000, + ); // #000000 rgb(0, 0, 0) + static const Color blackNormalActive = Color( + 0xFF000000, + ); // #000000 rgb(0, 0, 0) static const Color blackDark = Color(0xFF000000); // #000000 rgb(0, 0, 0) static const Color blackDarkHover = Color(0xFF000000); // #000000 rgb(0, 0, 0) - static const Color blackDarkActive = Color(0xFF000000); // #000000 rgb(0, 0, 0) + static const Color blackDarkActive = Color( + 0xFF000000, + ); // #000000 rgb(0, 0, 0) static const Color blackDarker = Color(0xFF000000); // #000000 rgb(0, 0, 0) //endregion //region --- Grey Colors --- - static const Color darkGreyLight = Color(0xFFeaeaea); // #eaeaea rgb(234, 234, 234) - static const Color darkGreyLightHover = Color(0xFFdfdfdf); // #dfdfdf rgb(223, 223, 223) - static const Color darkGreyLightActive = Color(0xFFbdbdbd); // #bdbdbd rgb(189, 189, 189) - static const Color darkGreyNormal = Color(0xFF2a2a2a); // #2a2a2a rgb(42, 42, 42) - static const Color darkGreyNormalHover = Color(0xFF262626); // #262626 rgb(38, 38, 38) - static const Color darkGreyNormalActive = Color(0xFF222222); // #222222 rgb(34, 34, 34) - static const Color darkGreyDark = Color(0xFF202020); // #202020 rgb(32, 32, 32) - static const Color darkGreyDarkHover = Color(0xFF191919); // #191919 rgb(25, 25, 25) - static const Color darkGreyDarkActive = Color(0xFF131313); // #131313 rgb(19, 19, 19) - static const Color darkGreyDarker = Color(0xFF0f0f0f); // #0f0f0f rgb(15, 15, 15) + static const Color darkGreyLight = Color( + 0xFFeaeaea, + ); // #eaeaea rgb(234, 234, 234) + static const Color darkGreyLightHover = Color( + 0xFFdfdfdf, + ); // #dfdfdf rgb(223, 223, 223) + static const Color darkGreyLightActive = Color( + 0xFFbdbdbd, + ); // #bdbdbd rgb(189, 189, 189) + static const Color darkGreyNormal = Color( + 0xFF2a2a2a, + ); // #2a2a2a rgb(42, 42, 42) + static const Color darkGreyNormalHover = Color( + 0xFF262626, + ); // #262626 rgb(38, 38, 38) + static const Color darkGreyNormalActive = Color( + 0xFF222222, + ); // #222222 rgb(34, 34, 34) + static const Color darkGreyDark = Color( + 0xFF202020, + ); // #202020 rgb(32, 32, 32) + static const Color darkGreyDarkHover = Color( + 0xFF191919, + ); // #191919 rgb(25, 25, 25) + static const Color darkGreyDarkActive = Color( + 0xFF131313, + ); // #131313 rgb(19, 19, 19) + static const Color darkGreyDarker = Color( + 0xFF0f0f0f, + ); // #0f0f0f rgb(15, 15, 15) //endregion //region ---Medium Grey Colors --- - static const Color mediumGreyLight = Color(0xFFf4f4f4); // #f4f4f4 rgb(244, 244, 244) - static const Color mediumGreyLightHover = Color(0xFFeeeeee); // #eeeeee rgb(238, 238, 238) - static const Color mediumGreyLightActive = Color(0xFFdcdcdc); // #dcdcdc rgb(220, 220, 220) - static const Color mediumGreyNormal = Color(0xFF8f8f8f); // #8f8f8f rgb(143, 143, 143) - static const Color mediumGreyNormalHover = Color(0xFF818181); // #818181 rgb(129, 129, 129) - static const Color mediumGreyNormalActive = Color(0xFF727272); // #727272 rgb(114, 114, 114) - static const Color mediumGreyDark = Color(0xFF6b6b6b); // #6b6b6b rgb(107, 107, 107) - static const Color mediumGreyDarkHover = Color(0xFF565656); // #565656 rgb(86, 86, 86) - static const Color mediumGreyDarkActive = Color(0xFF404040); // #404040 rgb(64, 64, 64) - static const Color mediumGreyDarker = Color(0xFF323232); // #323232 rgb(50, 50, 50) - static const Color customGrey = Color(0xFF808081); // #808081 rgb(128, 128, 129) + static const Color mediumGrey = Color( + 0xFF979797, + ); // #979797 rgb(151, 151, 151) + static const Color mediumGreyLight = Color( + 0xFFf4f4f4, + ); // #f4f4f4 rgb(244, 244, 244) + static const Color mediumGreyLightHover = Color( + 0xFFeeeeee, + ); // #eeeeee rgb(238, 238, 238) + static const Color mediumGreyLightActive = Color( + 0xFFdcdcdc, + ); // #dcdcdc rgb(220, 220, 220) + static const Color mediumGreyNormal = Color( + 0xFF8f8f8f, + ); // #8f8f8f rgb(143, 143, 143) + static const Color mediumGreyNormalHover = Color( + 0xFF818181, + ); // #818181 rgb(129, 129, 129) + static const Color mediumGreyNormalActive = Color( + 0xFF727272, + ); // #727272 rgb(114, 114, 114) + static const Color mediumGreyDark = Color( + 0xFF6b6b6b, + ); // #6b6b6b rgb(107, 107, 107) + static const Color mediumGreyDarkHover = Color( + 0xFF565656, + ); // #565656 rgb(86, 86, 86) + static const Color mediumGreyDarkActive = Color( + 0xFF404040, + ); // #404040 rgb(64, 64, 64) + static const Color mediumGreyDarker = Color( + 0xFF323232, + ); // #323232 rgb(50, 50, 50) + static const Color customGrey = Color( + 0xFF808081, + ); // #808081 rgb(128, 128, 129) //endregion //region ---Light Grey Colors --- - static const Color lightGreyLight = Color(0xFFfdfdfd); // #fdfdfd rgb(253, 253, 253) - static const Color lightGreyLightHover = Color(0xFFfcfcfc); // #fcfcfc rgb(252, 252, 252) - static const Color lightGreyLightActive = Color(0xFFfafafa); // #fafafa rgb(250, 250, 250) - static const Color lightGreyNormal = Color(0xFFeeeeee); // #eeeeee rgb(238, 238, 238) - static const Color lightGreyNormalHover = Color(0xFFd6d6d6); // #d6d6d6 rgb(214, 214, 214) - static const Color lightGreyNormalActive = Color(0xFFbebebe); // #bebebe rgb(190, 190, 190) - static const Color lightGreyDark = Color(0xFFb3b3b3); // #b3b3b3 rgb(179, 179, 179) - static const Color lightGreyDarkHover = Color(0xFF8f8f8f); // #8f8f8f rgb(143, 143, 143) - static const Color lightGreyDarkActive = Color(0xFF6b6b6b); // #6b6b6b rgb(107, 107, 107) - static const Color lightGreyDarker = Color(0xFF535353); // #535353 rgb(83, 83, 83) + static const Color lightGreyLight = Color( + 0xFFfdfdfd, + ); // #fdfdfd rgb(253, 253, 253) + static const Color lightGreyLightHover = Color( + 0xFFfcfcfc, + ); // #fcfcfc rgb(252, 252, 252) + static const Color lightGreyLightActive = Color( + 0xFFfafafa, + ); // #fafafa rgb(250, 250, 250) + static const Color lightGreyNormal = Color( + 0xFFeeeeee, + ); // #eeeeee rgb(238, 238, 238) + static const Color lightGreyNormalHover = Color( + 0xFFd6d6d6, + ); // #d6d6d6 rgb(214, 214, 214) + static const Color lightGreyNormalActive = Color( + 0xFFbebebe, + ); // #bebebe rgb(190, 190, 190) + static const Color lightGreyDark = Color( + 0xFFb3b3b3, + ); // #b3b3b3 rgb(179, 179, 179) + static const Color lightGreyDarkHover = Color( + 0xFF8f8f8f, + ); // #8f8f8f rgb(143, 143, 143) + static const Color lightGreyDarkActive = Color( + 0xFF6b6b6b, + ); // #6b6b6b rgb(107, 107, 107) + static const Color lightGreyDarker = Color( + 0xFF535353, + ); // #535353 rgb(83, 83, 83) //endregion //region ---WhiteGrey Colors --- - static const Color whiteGreyLight = Color(0xFFfefefe); // #fefefe rgb(254, 254, 254) - static const Color whiteGreyLightHover = Color(0xFFfefefe); // #fefefe rgb(254, 254, 254) - static const Color whiteGreyLightActive = Color(0xFFfdfdfd); // #fdfdfd rgb(253, 253, 253) - static const Color whiteGreyNormal = Color(0xFFf9f9f9); // #f9f9f9 rgb(249, 249, 249) - static const Color whiteGreyNormalHover = Color(0xFFe0e0e0); // #e0e0e0 rgb(224, 224, 224) - static const Color whiteGreyNormalActive = Color(0xFFc7c7c7); // #c7c7c7 rgb(199, 199, 199) - static const Color whiteGreyDark = Color(0xFFbbbbbb); // #bbbbbb rgb(187, 187, 187) - static const Color whiteGreyDarkHover = Color(0xFF959595); // #959595 rgb(149, 149, 149) - static const Color whiteGreyDarkActive = Color(0xFF707070); // #707070 rgb(112, 112, 112) - static const Color whiteGreyDarker = Color(0xFF575757); // #575757 rgb(87, 87, 87) + static const Color whiteGreyLight = Color( + 0xFFfefefe, + ); // #fefefe rgb(254, 254, 254) + static const Color whiteGreyLightHover = Color( + 0xFFfefefe, + ); // #fefefe rgb(254, 254, 254) + static const Color whiteGreyLightActive = Color( + 0xFFfdfdfd, + ); // #fdfdfd rgb(253, 253, 253) + static const Color whiteGreyNormal = Color( + 0xFFf9f9f9, + ); // #f9f9f9 rgb(249, 249, 249) + static const Color whiteGreyNormalHover = Color( + 0xFFe0e0e0, + ); // #e0e0e0 rgb(224, 224, 224) + static const Color whiteGreyNormalActive = Color( + 0xFFc7c7c7, + ); // #c7c7c7 rgb(199, 199, 199) + static const Color whiteGreyDark = Color( + 0xFFbbbbbb, + ); // #bbbbbb rgb(187, 187, 187) + static const Color whiteGreyDarkHover = Color( + 0xFF959595, + ); // #959595 rgb(149, 149, 149) + static const Color whiteGreyDarkActive = Color( + 0xFF707070, + ); // #707070 rgb(112, 112, 112) + static const Color whiteGreyDarker = Color( + 0xFF575757, + ); // #575757 rgb(87, 87, 87) //endregion //region ---White Colors --- - static const Color whiteLight = Color(0xFFffffff); // #ffffff rgb(255, 255, 255) - static const Color whiteLightHover = Color(0xFFffffff); // #ffffff rgb(255, 255, 255) - static const Color whiteLightActive = Color(0xFFffffff); // #ffffff rgb(255, 255, 255) - static const Color whiteNormal = Color(0xFFffffff); // #ffffff rgb(255, 255, 255) - static const Color whiteNormalHover = Color(0xFFe6e6e6); // #e6e6e6 rgb(230, 230, 230) - static const Color whiteNormalActive = Color(0xFFcccccc); // #cccccc rgb(204, 204, 204) - static const Color whiteDark = Color(0xFFbfbfbf); // #bfbfbf rgb(191, 191, 191) - static const Color whiteDarkHover = Color(0xFF999999); // #999999 rgb(153, 153, 153) - static const Color whiteDarkActive = Color(0xFF737373); // #737373 rgb(115, 115, 115) + static const Color whiteLight = Color( + 0xFFffffff, + ); // #ffffff rgb(255, 255, 255) + static const Color whiteLightHover = Color( + 0xFFffffff, + ); // #ffffff rgb(255, 255, 255) + static const Color whiteLightActive = Color( + 0xFFffffff, + ); // #ffffff rgb(255, 255, 255) + static const Color whiteNormal = Color( + 0xFFffffff, + ); // #ffffff rgb(255, 255, 255) + static const Color whiteNormalHover = Color( + 0xFFe6e6e6, + ); // #e6e6e6 rgb(230, 230, 230) + static const Color whiteNormalActive = Color( + 0xFFcccccc, + ); // #cccccc rgb(204, 204, 204) + static const Color whiteDark = Color( + 0xFFbfbfbf, + ); // #bfbfbf rgb(191, 191, 191) + static const Color whiteDarkHover = Color( + 0xFF999999, + ); // #999999 rgb(153, 153, 153) + static const Color whiteDarkActive = Color( + 0xFF737373, + ); // #737373 rgb(115, 115, 115) static const Color whiteDarker = Color(0xFF595959); // #595959 rgb(89, 89, 89) //endregion //region --- green1 Colors --- - static const Color green1Light = Color(0xFFe6f6f4); // #e6f6f4 rgb(230, 246, 244) - static const Color green1LightHover = Color(0xFFd9f2ef); // #d9f2ef rgb(217, 242, 239) - static const Color green1LightActive = Color(0xFFb0e4dd); // #b0e4dd rgb(176, 228, 221) - static const Color green1Normal = Color(0xFF00a991); // #00a991 rgb(0, 169, 145) - static const Color green1NormalHover = Color(0xFF009883); // #009883 rgb(0, 152, 131) - static const Color green1NormalActive = Color(0xFF008774); // #008774 rgb(0, 135, 116) + static const Color green1Light = Color( + 0xFFe6f6f4, + ); // #e6f6f4 rgb(230, 246, 244) + static const Color green1LightHover = Color( + 0xFFd9f2ef, + ); // #d9f2ef rgb(217, 242, 239) + static const Color green1LightActive = Color( + 0xFFb0e4dd, + ); // #b0e4dd rgb(176, 228, 221) + static const Color green1Normal = Color( + 0xFF00a991, + ); // #00a991 rgb(0, 169, 145) + static const Color green1NormalHover = Color( + 0xFF009883, + ); // #009883 rgb(0, 152, 131) + static const Color green1NormalActive = Color( + 0xFF008774, + ); // #008774 rgb(0, 135, 116) static const Color green1Dark = Color(0xFF007f6d); // #007f6d rgb(0, 127, 109) - static const Color green1DarkHover = Color(0xFF006557); // #006557 rgb(0, 101, 87) - static const Color green1DarkActive = Color(0xFF004c41); // #004c41 rgb(0, 76, 65) + static const Color green1DarkHover = Color( + 0xFF006557, + ); // #006557 rgb(0, 101, 87) + static const Color green1DarkActive = Color( + 0xFF004c41, + ); // #004c41 rgb(0, 76, 65) static const Color green1Darker = Color(0xFF003b33); // #003b33 rgb(0, 59, 51) //endregion //region --- Yellow Colors --- - static const Color yellowLight = Color(0xFFfff9e6); // #fff9e6 rgb(255, 249, 230) - static const Color yellowLightHover = Color(0xFFfff6da); // #fff6da rgb(255, 246, 218) - static const Color yellowLightActive = Color(0xFFffecb2); // #ffecb2 rgb(255, 236, 178) - static const Color yellowNormal = Color(0xFFffc107); // #ffc107 rgb(255, 193, 7) - static const Color yellowNormal2 = Color(0xFFFF9800); // #FF9800 rgb(255, 152, 0) - static const Color yellowNormalHover = Color(0xFFe6ae06); // #e6ae06 rgb(230, 174, 6) - static const Color yellowNormalActive = Color(0xFFcc9a06); // #cc9a06 rgb(204, 154, 6) + static const Color yellowLight = Color( + 0xFFfff9e6, + ); // #fff9e6 rgb(255, 249, 230) + static const Color yellowLightHover = Color( + 0xFFfff6da, + ); // #fff6da rgb(255, 246, 218) + static const Color yellowLightActive = Color( + 0xFFffecb2, + ); // #ffecb2 rgb(255, 236, 178) + static const Color yellowNormal = Color( + 0xFFffc107, + ); // #ffc107 rgb(255, 193, 7) + static const Color yellowNormal2 = Color( + 0xFFFF9800, + ); // #FF9800 rgb(255, 152, 0) + static const Color yellowNormalHover = Color( + 0xFFe6ae06, + ); // #e6ae06 rgb(230, 174, 6) + static const Color yellowNormalActive = Color( + 0xFFcc9a06, + ); // #cc9a06 rgb(204, 154, 6) static const Color yellowDark = Color(0xFFbf9105); // #bf9105 rgb(191, 145, 5) - static const Color yellowDarkHover = Color(0xFF997404); // #997404 rgb(153, 116, 4) - static const Color yellowDarkActive = Color(0xFF735703); // #735703 rgb(115, 87, 3) + static const Color yellowDarkHover = Color( + 0xFF997404, + ); // #997404 rgb(153, 116, 4) + static const Color yellowDarkActive = Color( + 0xFF735703, + ); // #735703 rgb(115, 87, 3) static const Color yellowDarker = Color(0xFF594402); // #594402 rgb(89, 68, 2) // #594402 rgb(89, 68, 2) @@ -141,44 +324,81 @@ class AppColor { //region --- red Colors --- static const Color redLight = Color(0xFFfdeeee); // #fdeeee rgb(253, 238, 238) - static const Color redLightHover = Color(0xFFfce6e6); // #fce6e6 rgb(252, 230, 230) - static const Color redLightActive = Color(0xFFf9cbcb); // #f9cbcb rgb(249, 203, 203) + static const Color redLightHover = Color( + 0xFFfce6e6, + ); // #fce6e6 rgb(252, 230, 230) + static const Color redLightActive = Color( + 0xFFf9cbcb, + ); // #f9cbcb rgb(249, 203, 203) static const Color redNormal = Color(0xFFeb5757); // #eb5757 rgb(235, 87, 87) - static const Color redNormalHover = Color(0xFFd44e4e); // #d44e4e rgb(212, 78, 78) - static const Color redNormalActive = Color(0xFFbc4646); // #bc4646 rgb(188, 70, 70) + static const Color redNormalHover = Color( + 0xFFd44e4e, + ); // #d44e4e rgb(212, 78, 78) + static const Color redNormalActive = Color( + 0xFFbc4646, + ); // #bc4646 rgb(188, 70, 70) static const Color redDark = Color(0xFFb04141); // #b04141 rgb(176, 65, 65) - static const Color redDarkHover = Color(0xFF8d3434); // #8d3434 rgb(141, 52, 52) - static const Color redDarkActive = Color(0xFF6a2727); // #6a2727 rgb(106, 39, 39) + static const Color redDarkHover = Color( + 0xFF8d3434, + ); // #8d3434 rgb(141, 52, 52) + static const Color redDarkActive = Color( + 0xFF6a2727, + ); // #6a2727 rgb(106, 39, 39) static const Color redDarker = Color(0xFF521e1e); // #521e1e rgb(82, 30, 30) - static const Color redDarkerText = Color(0xFFD24E4E); // #D34E4E rgba(211, 78, 78, 1) + static const Color redDarkerText = Color( + 0xFFD24E4E, + ); // #D34E4E rgba(211, 78, 78, 1) - static const Color redLight2 = Color(0xFFEDDCE0); // #EDDCE0 rgb(237, 220, 224) - static const Color redLightActive2 = Color(0xFFE0BCC5); // #E0BCC5 rgb(224, 188, 197) + static const Color redLight2 = Color( + 0xFFEDDCE0, + ); // #EDDCE0 rgb(237, 220, 224) + static const Color redLightActive2 = Color( + 0xFFE0BCC5, + ); // #E0BCC5 rgb(224, 188, 197) //endregion //region --- Teal Colors --- - static const Color tealLight = Color(0xFFe8f6f8); // #e8f6f8 rgb(232, 246, 248) - static const Color tealLightHover = Color(0xFFdcf1f4); // #dcf1f4 rgb(220, 241, 244) - static const Color tealLightActive = Color(0xFFb7e2e9); // #b7e2e9 rgb(183, 226, 233) - static const Color tealNormal = Color(0xFF17a2b8); // #17a2b8 rgb(23, 162, 184) - static const Color tealNormalHover = Color(0xFF1592a6); // #1592a6 rgb(21, 146, 166) - static const Color tealNormalActive = Color(0xFF128293); // #128293 rgb(18, 130, 147) + static const Color tealLight = Color( + 0xFFe8f6f8, + ); // #e8f6f8 rgb(232, 246, 248) + static const Color tealLightHover = Color( + 0xFFdcf1f4, + ); // #dcf1f4 rgb(220, 241, 244) + static const Color tealLightActive = Color( + 0xFFb7e2e9, + ); // #b7e2e9 rgb(183, 226, 233) + static const Color tealNormal = Color( + 0xFF17a2b8, + ); // #17a2b8 rgb(23, 162, 184) + static const Color tealNormalHover = Color( + 0xFF1592a6, + ); // #1592a6 rgb(21, 146, 166) + static const Color tealNormalActive = Color( + 0xFF128293, + ); // #128293 rgb(18, 130, 147) static const Color tealDark = Color(0xFF117a8a); // #117a8a rgb(17, 122, 138) - static const Color tealDarkHover = Color(0xFF0e616e); // #0e616e rgb(14, 97, 110) - static const Color tealDarkActive = Color(0xFF0a4953); // #0a4953 rgb(10, 73, 83) + static const Color tealDarkHover = Color( + 0xFF0e616e, + ); // #0e616e rgb(14, 97, 110) + static const Color tealDarkActive = Color( + 0xFF0a4953, + ); // #0a4953 rgb(10, 73, 83) static const Color tealDarker = Color(0xFF083940); // #083940 rgb(8, 57, 64) static const Color bgLight = Color(0xFFF5F5F5); // #083940 rgb(8, 57, 64) static const Color bgIcon = Color(0xFF797979); // #797979 static const Color bgDark = Color(0xFF979797); // #083940 rgb(8, 57, 64) static const Color textColor = Color(0xFF5B5B5B); // #083940 rgb(8, 57, 64) + static const Color textColor2 = Color(0xFF636363); // #636363 rgb(99, 99, 99) static const Color labelTextColor = Color(0xFF808080); static const Color textColorLight = Color(0xFFB2B2B2); static const Color iconColor = Color(0xFF444444); // #444444 rgb(68, 68, 68) - static const Color borderColor = Color(0xFFC7CFCD); // #C7CFCD rgb(199, 207, 205)` + static const Color borderColor = Color( + 0xFFC7CFCD, + ); // #C7CFCD rgb(199, 207, 205)` static const Color unselectTextColor = Color(0xFF888888); // static const Color accent1 = Color(0xffffe5ce); // - + static const Color bgLight2 = Color(0xFFEFEFEF); // #EFEFEF rgb(239, 239, 239) //endregion //region --- category Colors --- diff --git a/packages/core/lib/presentation/common/assets.gen.dart b/packages/core/lib/presentation/common/assets.gen.dart index cb5f975..5a43f44 100644 --- a/packages/core/lib/presentation/common/assets.gen.dart +++ b/packages/core/lib/presentation/common/assets.gen.dart @@ -187,6 +187,9 @@ class $AssetsIconsGen { /// File path: assets/icons/filter_outline.svg SvgGenImage get filterOutline => const SvgGenImage('assets/icons/filter_outline.svg'); + /// File path: assets/icons/gallery_add.svg + SvgGenImage get galleryAdd => const SvgGenImage('assets/icons/gallery_add.svg'); + /// File path: assets/icons/gps.svg SvgGenImage get gps => const SvgGenImage('assets/icons/gps.svg'); @@ -418,6 +421,7 @@ class $AssetsIconsGen { farms, filter, filterOutline, + galleryAdd, gps, hashtag, home, @@ -674,6 +678,9 @@ class $AssetsVecGen { /// File path: assets/vec/filter_outline.svg.vec SvgGenImage get filterOutlineSvg => const SvgGenImage.vec('assets/vec/filter_outline.svg.vec'); + /// File path: assets/vec/gallery_add.svg.vec + SvgGenImage get galleryAddSvg => const SvgGenImage.vec('assets/vec/gallery_add.svg.vec'); + /// File path: assets/vec/gps.svg.vec SvgGenImage get gpsSvg => const SvgGenImage.vec('assets/vec/gps.svg.vec'); @@ -905,6 +912,7 @@ class $AssetsVecGen { farmsSvg, filterSvg, filterOutlineSvg, + galleryAddSvg, gpsSvg, hashtagSvg, homeSvg, diff --git a/packages/core/lib/presentation/widget/bottom_navigation/wave_bottom_navigation.dart b/packages/core/lib/presentation/widget/bottom_navigation/wave_bottom_navigation.dart index 8c92900..0b9a07c 100644 --- a/packages/core/lib/presentation/widget/bottom_navigation/wave_bottom_navigation.dart +++ b/packages/core/lib/presentation/widget/bottom_navigation/wave_bottom_navigation.dart @@ -95,8 +95,8 @@ class _WaveBottomNavigationState extends State { animation: _controller, builder: (context, child) { double value = 0.0; - final scale = _calculateScale(_controller.page ?? _controller.initialPage.toDouble() ?? 0.0, index); - value = index - (_controller.page ?? _controller.initialPage.toDouble() ?? 0.0); + final scale = _calculateScale(_controller.page ?? _controller.initialPage.toDouble(), index); + value = index - (_controller.page ?? _controller.initialPage.toDouble()); value = (value).clamp(-1, 1); double offset = value * 30; if (value.abs() < 0.2 || value.abs() > 0.2) { diff --git a/packages/core/lib/presentation/widget/buttons/fab.dart b/packages/core/lib/presentation/widget/buttons/fab.dart index a9dda88..2a739f7 100644 --- a/packages/core/lib/presentation/widget/buttons/fab.dart +++ b/packages/core/lib/presentation/widget/buttons/fab.dart @@ -220,7 +220,7 @@ class _RFabState extends State { shape: WidgetStatePropertyAll( CircleBorder(side: BorderSide(width: 1, color: Colors.transparent)), ), - fixedSize: WidgetStatePropertyAll(Size(widget.radius ?? 56, widget.radius ?? 56)), + fixedSize: WidgetStatePropertyAll(Size(widget.radius, widget.radius)), padding: WidgetStatePropertyAll(EdgeInsets.zero), ), child: widget.isLoading diff --git a/packages/core/lib/presentation/widget/draggable_bottom_sheet/draggable_bottom_sheet.dart b/packages/core/lib/presentation/widget/draggable_bottom_sheet/draggable_bottom_sheet.dart index aa74dbc..b8f26bb 100644 --- a/packages/core/lib/presentation/widget/draggable_bottom_sheet/draggable_bottom_sheet.dart +++ b/packages/core/lib/presentation/widget/draggable_bottom_sheet/draggable_bottom_sheet.dart @@ -1,11 +1,6 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; - -import 'package:rasadyar_core/presentation/common/app_color.dart'; import 'package:rasadyar_core/presentation/widget/draggable_bottom_sheet/draggable_bottom_sheet_controller.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; class DraggableBottomSheet extends StatelessWidget { final DraggableBottomSheetController controller; diff --git a/packages/core/lib/presentation/widget/list_view/r_list_view.dart b/packages/core/lib/presentation/widget/list_view/r_list_view.dart index b5a8298..f7ea3b9 100644 --- a/packages/core/lib/presentation/widget/list_view/r_list_view.dart +++ b/packages/core/lib/presentation/widget/list_view/r_list_view.dart @@ -180,39 +180,4 @@ class RListView extends StatelessWidget { return onRefresh != null ? RefreshIndicator(onRefresh: onRefresh!, child: list) : list; } } - - RListView._({ - required this.type, - required this.scrollDirection, - required this.reverse, - required this.controller, - required this.primary, - required this.physics, - required this.scrollBehavior, - required this.shrinkWrap, - required this.center, - required this.cacheExtent, - required this.semanticChildCount, - required this.itemCount, - required this.dragStartBehavior, - required this.keyboardDismissBehavior, - required this.restorationId, - required this.clipBehavior, - required this.hitTestBehavior, - required this.prototypeItem, - required this.padding, - required this.itemExtent, - required this.itemExtentBuilder, - required this.findChildIndexCallback, - required this.itemBuilder, - required this.separatorBuilder, - required this.addAutomaticKeepAlives, - required this.addRepaintBoundaries, - required this.addSemanticIndexes, - required this.loadingWidget, - required this.emptyWidget, - required this.errorWidget, - required this.resource, - required this.onRefresh, - }); } diff --git a/packages/core/lib/presentation/widget/stepper/r_stepper.dart b/packages/core/lib/presentation/widget/stepper/r_stepper.dart new file mode 100644 index 0000000..a7ae4a7 --- /dev/null +++ b/packages/core/lib/presentation/widget/stepper/r_stepper.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_core/core.dart'; + +class RStepper extends StatelessWidget { + const RStepper({ + super.key, + required this.activeStepColor, + this.deactiveStepColor, + this.dividerColor, + required this.stepsCount, + required this.activeStep, + }); + + final Color activeStepColor; + final Color? deactiveStepColor; + final Color? dividerColor; + final int stepsCount; + final int activeStep; + + @override + Widget build(BuildContext context) { + + + return SizedBox( + height: 24.h, + width: Get.width, + child: Row( + children: List.generate(stepsCount, (index) { + final isFirst = index == 0; + return SizedBox( + width: (Get.width) / (stepsCount - 1), + child: Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: index == activeStep + ? activeStepColor + : deactiveStepColor ?? AppColor.whiteNormalActive, + shape: BoxShape.circle, + ), + width: 24.w, + height: 24.h, + child: Center( + child: Text( + (index + 1).toString(), + style: AppFonts.yekan14.copyWith(color: AppColor.textColor), + textAlign: TextAlign.center, + ), + ), + ), + ); + }), + ), + ); + } +} diff --git a/packages/core/lib/presentation/widget/widget.dart b/packages/core/lib/presentation/widget/widget.dart index fd91299..e2d6bc3 100644 --- a/packages/core/lib/presentation/widget/widget.dart +++ b/packages/core/lib/presentation/widget/widget.dart @@ -45,6 +45,7 @@ export 'overlay_dropdown_widget/resource_overlay_dropdown.dart'; export 'pagination/pagination_from_until.dart'; export 'pagination/show_more.dart'; export 'slider/slider.dart'; +export 'stepper/r_stepper.dart'; export 'tabs/new_tab.dart'; export 'tabs/r_segment.dart'; export 'tabs/tab.dart'; diff --git a/packages/core/lib/utils/apk_updater.dart b/packages/core/lib/utils/apk_updater.dart index 23776db..a741e8f 100644 --- a/packages/core/lib/utils/apk_updater.dart +++ b/packages/core/lib/utils/apk_updater.dart @@ -4,6 +4,11 @@ import 'package:dio/dio.dart'; import 'package:flutter/services.dart'; import 'package:path_provider/path_provider.dart'; +/// A class that allows you to download and install an APK file. +/// Example: +/// ```dart +/// await ApkUpdater.downloadAndInstall(); +/// ``` class ApkUpdater { static const _channel = MethodChannel('apk_installer'); @@ -13,7 +18,6 @@ class ApkUpdater { final dir = await getExternalStorageDirectory(); final path = "${dir!.path}/update.apk"; - final file = File(path); await dio.download(apkUrl, path); diff --git a/packages/core/lib/utils/camera_utils.dart b/packages/core/lib/utils/camera_utils.dart index 90f471f..b547825 100644 --- a/packages/core/lib/utils/camera_utils.dart +++ b/packages/core/lib/utils/camera_utils.dart @@ -1,5 +1,10 @@ import 'package:rasadyar_core/core.dart'; +/// Pick a camera image. +/// Example: +/// ```dart +/// await pickCameraImage(); +/// ``` Future pickCameraImage({ double? maxWidth, double? maxHeight, @@ -21,6 +26,11 @@ Future pickCameraImage({ return tmpImage; } +/// Pick a gallery image. +/// Example: +/// ```dart +/// await pickGalleryImage(); +/// ``` Future pickGalleryImage({ double? maxWidth, double? maxHeight, diff --git a/packages/core/lib/utils/extension/date_time_utils.dart b/packages/core/lib/utils/extension/date_time_utils.dart index caa653a..2b251e7 100644 --- a/packages/core/lib/utils/extension/date_time_utils.dart +++ b/packages/core/lib/utils/extension/date_time_utils.dart @@ -2,12 +2,16 @@ import 'package:intl/intl.dart'; import 'package:persian_datetime_picker/persian_datetime_picker.dart'; extension XDateTime2 on DateTime { - get formattedJalaliDate { + /// Convert the date time to a Jalali date. + /// Example: DateTime(2025, 1, 1) -> '1404/01/01' + String get formattedJalaliDate { final jalaliDate = Jalali.fromDateTime(this); return "${jalaliDate.year}/${jalaliDate.month.toString().padLeft(2, '0')}/${jalaliDate.day.toString().padLeft(2, '0')}"; } - get formattedYHMS { + /// Convert the date time to a YHMS date. + /// Example: DateTime(2025, 1, 1) -> '2025-01-01 00:00:00' + String get formattedYHMS { return DateFormat('yyyy-MM-dd HH:mm:ss').format(this); } } diff --git a/packages/core/lib/utils/extension/num_utils.dart b/packages/core/lib/utils/extension/num_utils.dart index b7293b9..3efc6e5 100644 --- a/packages/core/lib/utils/extension/num_utils.dart +++ b/packages/core/lib/utils/extension/num_utils.dart @@ -1,14 +1,17 @@ import 'package:intl/intl.dart'; extension XNumExtension on num? { + /// Convert the number to a string with comma separator. + /// Example: 1000 -> '۱,۰۰۰' String get separatedByCommaFa { final formatter = NumberFormat('#,###', 'fa_IR'); - return this == null ? '':formatter.format(this); + return this == null ? '' : formatter.format(this); } - + /// Convert the number to a string with comma separator. + /// Example: 1000 -> '1,000' String get separatedByComma { final formatter = NumberFormat('#,###', 'en_US'); - return this == null ? '':formatter.format(this); + return this == null ? '' : formatter.format(this); } } diff --git a/packages/core/lib/utils/extension/string_utils.dart b/packages/core/lib/utils/extension/string_utils.dart index 2663144..7823060 100644 --- a/packages/core/lib/utils/extension/string_utils.dart +++ b/packages/core/lib/utils/extension/string_utils.dart @@ -2,49 +2,92 @@ import 'package:intl/intl.dart'; import 'package:persian_datetime_picker/persian_datetime_picker.dart'; extension XString on String? { + /// Convert the string to a number with comma separator. + /// Example: '1000' -> '1,000' + /// Example: '1000000' -> '1,000,000' + /// Example: '1000000000' -> '1,000,000,000' String get separatedByComma { final formatter = NumberFormat('#,###'); final number = num.tryParse(this ?? ''); return number != null ? formatter.format(number) : (this ?? ''); } + /// Clear the comma from the string. + /// Example: '1,000' -> '1000' + /// Example: '1,000,000' -> '1000000' + /// Example: '1,000,000,000' -> '1000000000' String get clearComma { return (this ?? '').replaceAll(RegExp(r'\D'), ''); } + /// Add the count extension to the string. + /// Example: '1' -> '1 قطعه' + /// Example: '10' -> '10 قطعه' + /// Example: '100' -> '100 قطعه' String get addCountEXT { return '$this قطعه'; } + /// Add the day extension to the string. + /// Example: '1' -> '1 روزه' + /// Example: '10' -> '10 روزه' + /// Example: '100' -> '100 روزه' String get addDayEXT { return '$thisروزه'; } + /// Add the kg extension to the string. + /// Example: '1' -> '1 کیلوگرم' + /// Example: '10' -> '10 کیلوگرم' + /// Example: '100' -> '100 کیلوگرم' String get addKgFa { return '${this ?? 0}کیلوگرم '; } + /// Add the kg extension to the string. + /// Example: '1' -> '1 کیلوگرم' + /// Example: '10' -> '10 کیلوگرم' + /// Example: '100' -> '100 کیلوگرم' String get addKgFaWithParentheses { return '${this ?? 0} (کیلوگرم)'; } + /// Add the kg extension to the string. + /// Example: '1' -> '1 KG' + /// Example: '10' -> '10 KG' + /// Example: '100' -> '100 KG' String get addKg { return '$this KG'; } + /// Add the real extension to the string. + /// Example: '1' -> '1 ریال' + /// Example: '10' -> '10 ریال' + /// Example: '100' -> '100 ریال' String get addReal { return ' $this ریال'; } + /// Convert the string to a DateTime. + /// Example: '2025-01-01' -> DateTime(2025, 1, 1) + /// Example: '2025-01-01 12:00:00' -> DateTime(2025, 1, 1, 12, 0, 0) DateTime get toDateTime => DateTime.parse(this ?? ''); + /// Convert the string to a Jalali date. + /// Example: '2025/01/01' -> '1404-01-01' + /// Example: '2025-01-01' -> '1404-01-01' + /// Example: '2025-01-01 12:00:00' -> '1404-01-01 12:00:00' String get formattedJalaliDate { - String tmp = (this != null && this!.contains("/")) ? this!.replaceAll("/", "-") : (this ?? ""); + String tmp = (this != null && this!.contains("/")) + ? this!.replaceAll("/", "-") + : (this ?? ""); final dateTime = DateTime.parse(tmp); final jalaliDate = Jalali.fromDateTime(dateTime); return "${jalaliDate.year}/${jalaliDate.month.toString().padLeft(2, '0')}/${jalaliDate.day.toString().padLeft(2, '0')}"; } + /// Convert the string to a Jalali date and time. + /// Example: '2025-01-01 12:00:00' -> Jalali(year: 1404, month: 1, day: 1, hour: 12, minute: 0, second: 0) String get formattedJalaliDateYHMS { final dateTime = DateTime.parse(this ?? ''); final jalaliDate = Jalali.fromDateTime(dateTime); @@ -55,15 +98,35 @@ extension XString on String? { return DateFormat('yyyy-MM-dd HH:mm:ss').format(toDateTime); } + /// Convert the string to a Jalali date. + /// Example: '2025-01-01' -> Jalali(year: 1404, month: 1, day: 1) + /// Example: '2025-01-01 12:00:00' -> Jalali(year: 1404, month: 1, day: 1, hour: 12, minute: 0, second: 0) Jalali get toJalali { final dateTime = DateTime.parse(this ?? ''); return Jalali.fromDateTime(dateTime); } + /// Get the version number from the string. + /// Example: '1.0.0' -> 100 + /// Example: '1.0.0.0' -> 1000 int get versionNumber => int.parse(this?.replaceAll(".", '') ?? '0'); + /// Check if the string is a valid version number. + /// Example: '۹' -> true + /// Example: '۱۲۳۴۵۶۷۸۹۰' -> true + /// Example: '1234567890' -> false bool get isDifferentDigits { final regex = RegExp(r'[۰-۹٠-٩]'); return regex.hasMatch(this ?? ''); } + + /// Normalize the string to remove extra spaces and convert to lowercase. + /// Example: " Hello World " -> "hello world" + /// Example: "Hello World" -> "hello world" + /// Example: "hello world" -> "hello world" + /// Example: "HELLO WORLD" -> "hello world" + /// Example: "Hello World" -> "hello world" + /// Example: "Hello World" -> "hello world" + String? get normalize => + this?.toLowerCase().trim().replaceAll(RegExp(r'\s+'), ' '); } diff --git a/packages/core/lib/utils/file_utils.dart b/packages/core/lib/utils/file_utils.dart index 4500eea..e158769 100644 --- a/packages/core/lib/utils/file_utils.dart +++ b/packages/core/lib/utils/file_utils.dart @@ -2,9 +2,16 @@ import 'dart:io'; import 'logger_utils.dart'; +/// Get the file size in KB. +/// Example: +/// ```dart +/// getFileSizeInKB('path/to/file.jpg'); +/// ``` void getFileSizeInKB(String filePath, {String? tag}) { final file = File(filePath); final bytes = file.lengthSync(); var size = (bytes / 1024).ceil(); - iLog('${tag ?? 'Picked'} image Size: $size , fileName : ${file.path.split('/').last}'); -} \ No newline at end of file + iLog( + '${tag ?? 'Picked'} image Size: $size , fileName : ${file.path.split('/').last}', + ); +} diff --git a/packages/core/lib/utils/map_utils.dart b/packages/core/lib/utils/map_utils.dart index 0f65d79..2bdedc9 100644 --- a/packages/core/lib/utils/map_utils.dart +++ b/packages/core/lib/utils/map_utils.dart @@ -1,5 +1,6 @@ import 'package:rasadyar_core/presentation/utils/data_time_utils.dart'; +/// Build a query params map. Map buildQueryParams({ Map? queryParams, String? search, @@ -49,6 +50,7 @@ Map buildQueryParams({ return params; } +/// Build a raw query params map. Map? buildRawQueryParams({ Map? queryParams, String? search, @@ -101,20 +103,21 @@ Map? buildRawQueryParams({ } if (centerLat != null) { - params['center_lat'] = centerLat ?? ''; + params['center_lat'] = centerLat; } if (centerLng != null) { - params['center_lon'] = centerLng ?? ''; + params['center_lon'] = centerLng; } if (radius != null) { - params['radius'] = radius ?? ''; + params['radius'] = radius; } return params.keys.isEmpty ? null : params; } +/// A map of English digits to Persian digits. const Map digitMap = { '۰': '0', '۱': '1', diff --git a/packages/core/lib/utils/number_utils.dart b/packages/core/lib/utils/number_utils.dart index c44012f..fadbc99 100644 --- a/packages/core/lib/utils/number_utils.dart +++ b/packages/core/lib/utils/number_utils.dart @@ -2,12 +2,12 @@ import 'dart:math'; final _random = Random(); - +/// Generate a random integer between min and max. int randomInt(int min, int max) { return min + _random.nextInt(max - min + 1); } - +/// Generate a random double between min and max. double randomDouble(double min, double max) { return min + _random.nextDouble() * (max - min); } \ No newline at end of file diff --git a/packages/core/lib/utils/parser.dart b/packages/core/lib/utils/parser.dart index 319be03..ac63629 100644 --- a/packages/core/lib/utils/parser.dart +++ b/packages/core/lib/utils/parser.dart @@ -1,5 +1,10 @@ import 'package:flutter/foundation.dart'; +/// Parse a list in isolate. +/// Example: +/// ```dart +/// await parseListInIsolate(list, fromJson); +/// ``` List _parserList(Map args) { final list = args['list'] as List; final T Function(Map) fromJson = @@ -8,6 +13,11 @@ List _parserList(Map args) { return list.map((e) => fromJson(e as Map)).toList(); } +/// Parse a list in isolate. +/// Example: +/// ```dart +/// await parseListInIsolate(list, fromJson); +/// ``` Future> parseListInIsolate( List list, T Function(Map) fromJson, diff --git a/packages/core/lib/utils/text_input_formatter/first_digit_decimal_formatter.dart b/packages/core/lib/utils/text_input_formatter/first_digit_decimal_formatter.dart index 0816a8f..de65934 100644 --- a/packages/core/lib/utils/text_input_formatter/first_digit_decimal_formatter.dart +++ b/packages/core/lib/utils/text_input_formatter/first_digit_decimal_formatter.dart @@ -1,8 +1,14 @@ import 'package:flutter/services.dart'; +/// A text input formatter that allows only one decimal point and one digit before the decimal point. +/// Example: '1234567890' -> '1234567890' +/// Example: '1234567890.1234567890' -> '1234567890.1' class FirstDigitDecimalFormatter extends TextInputFormatter { @override - TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) { + TextEditingValue formatEditUpdate( + TextEditingValue oldValue, + TextEditingValue newValue, + ) { String digit = newValue.text.replaceAll(RegExp(r'[^0-9]'), ""); late String res; diff --git a/packages/core/lib/utils/text_input_formatter/persian_formatter.dart b/packages/core/lib/utils/text_input_formatter/persian_formatter.dart index 14eca87..7846291 100644 --- a/packages/core/lib/utils/text_input_formatter/persian_formatter.dart +++ b/packages/core/lib/utils/text_input_formatter/persian_formatter.dart @@ -2,6 +2,11 @@ import 'package:flutter/services.dart'; import '../map_utils.dart'; +/// A text input formatter that converts English digits to Persian digits. +/// Example: '1234567890' -> '۱۲۳۴۵۶۷۸۹۰' +/// Example: '۱۲۳۴۵۶۷۸۹۰' -> '۱۲۳۴۵۶۷۸۹۰' +/// Example: '1234567890.1234567890' -> '۱۲۳۴۵۶۷۸۹۰.۱۲۳۴۵۶۷۸۹۰' +/// Example: '۱۲۳۴۵۶۷۸۹۰.۱۲۳۴۵۶۷۸۹۰' -> '۱۲۳۴۵۶۷۸۹۰.۱۲۳۴۵۶۷۸۹۰' class PersianFormatter extends TextInputFormatter { String _convert(String input) { final buffer = StringBuffer(); diff --git a/packages/core/lib/utils/separator_input_formatter.dart b/packages/core/lib/utils/text_input_formatter/separator_input_formatter.dart similarity index 86% rename from packages/core/lib/utils/separator_input_formatter.dart rename to packages/core/lib/utils/text_input_formatter/separator_input_formatter.dart index cc87a5f..6a86cc3 100644 --- a/packages/core/lib/utils/separator_input_formatter.dart +++ b/packages/core/lib/utils/text_input_formatter/separator_input_formatter.dart @@ -1,6 +1,12 @@ import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; + +/// A text input formatter that formats numbers with a separator. +/// Example: +/// ```dart +/// SeparatorInputFormatter() +/// ``` class SeparatorInputFormatter extends TextInputFormatter { final NumberFormat _formatter; diff --git a/packages/core/lib/utils/utils.dart b/packages/core/lib/utils/utils.dart index 11d538e..6f7bb07 100644 --- a/packages/core/lib/utils/utils.dart +++ b/packages/core/lib/utils/utils.dart @@ -13,6 +13,6 @@ export 'network/network.dart'; export 'number_utils.dart'; export 'parser.dart'; export 'route_utils.dart'; -export 'separator_input_formatter.dart'; +export 'text_input_formatter/separator_input_formatter.dart'; export 'text_input_formatter/first_digit_decimal_formatter.dart'; export 'text_input_formatter/persian_formatter.dart'; diff --git a/packages/core/pubspec.lock b/packages/core/pubspec.lock index b6df01c..a15e57e 100644 --- a/packages/core/pubspec.lock +++ b/packages/core/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: dd3d2ad434b9510001d089e8de7556d50c834481b9abc2891a0184a8493a19dc + sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d url: "https://pub.dev" source: hosted - version: "89.0.0" + version: "91.0.0" analyzer: dependency: "direct overridden" description: name: analyzer - sha256: c22b6e7726d1f9e5db58c7251606076a71ca0dbcf76116675edfadbec0c9e875 + sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08 url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.4.1" android_intent_plus: dependency: "direct main" description: @@ -77,10 +77,10 @@ packages: dependency: transitive description: name: build - sha256: "5b887c55a0f734b433b3b2d89f9cd1f99eb636b17e268a5b4259258bc916504b" + sha256: dfb67ccc9a78c642193e0c2d94cb9e48c2c818b3178a86097d644acdcde6a8d9 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.2" build_config: dependency: transitive description: @@ -93,18 +93,18 @@ packages: dependency: transitive description: name: build_daemon - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 url: "https://pub.dev" source: hosted - version: "4.0.4" + version: "4.1.1" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "804c47c936df75e1911c19a4fb8c46fa8ff2b3099b9f2b2aa4726af3774f734b" + sha256: "7b5b569f3df370590a85029148d6fc66c7d0201fc6f1847c07dd85d365ae9fcd" url: "https://pub.dev" source: hosted - version: "2.8.0" + version: "2.10.3" built_collection: dependency: transitive description: @@ -237,18 +237,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5" crypto: dependency: transitive description: name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" cupertino_icons: dependency: "direct main" description: @@ -277,10 +277,10 @@ packages: dependency: transitive description: name: dart_style - sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697 + sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" dartx: dependency: "direct main" description: @@ -309,10 +309,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "49413c8ca514dea7633e8def233b25efdf83ec8522955cc2c0e3ad802927e7c6" + sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33 url: "https://pub.dev" source: hosted - version: "12.1.0" + version: "12.2.0" device_info_plus_platform_interface: dependency: transitive description: @@ -325,10 +325,10 @@ packages: dependency: "direct main" description: name: device_preview_plus - sha256: "2ebe9cf25ed46875c9c1b745d0438df9e4c49f7bcf9ea466c88efbcffcc73ab7" + sha256: eb3e67929c9f04759e0d3708ad91d1018235549bcf8699f8a94909684c6555ae url: "https://pub.dev" source: hosted - version: "2.5.1" + version: "2.5.5" dio: dependency: "direct main" description: @@ -381,34 +381,34 @@ packages: dependency: transitive description: name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + sha256: "80a877f5ec570c4fb3b40720a70b6f31e8bb1315a464b4d3e92fe82754d4b21a" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.3+3" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" + sha256: "44f24d102e368370951b98ffe86c7325b38349e634578312976607d28cc6d747" url: "https://pub.dev" source: hosted - version: "0.9.4+4" + version: "0.9.4+6" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" url: "https://pub.dev" source: hosted - version: "0.9.3+4" + version: "0.9.3+5" fixnum: dependency: transitive description: @@ -511,10 +511,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 + sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" url: "https://pub.dev" source: hosted - version: "2.0.30" + version: "2.0.32" flutter_rating_bar: dependency: "direct main" description: @@ -591,10 +591,10 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 + sha256: "055de8921be7b8e8b98a233c7a5ef84b3a6fcc32f46f1ebf5b9bb3576d108355" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" flutter_test: dependency: "direct dev" description: flutter @@ -689,10 +689,10 @@ packages: dependency: "direct main" description: name: get_it - sha256: a4292e7cf67193f8e7c1258203104eb2a51ec8b3a04baa14695f4064c144297b + sha256: ae78de7c3f2304b8d81f2bb6e320833e5e81de942188542328f074978cc0efa9 url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.3.0" get_test: dependency: "direct dev" description: @@ -729,34 +729,34 @@ packages: dependency: "direct main" description: name: hive_ce - sha256: d678b1b2e315c18cd7ed8fd79eda25d70a1f3852d6988bfe5461cffe260c60aa + sha256: "81d39a03c4c0ba5938260a8c3547d2e71af59defecea21793d57fc3551f0d230" url: "https://pub.dev" source: hosted - version: "2.14.0" + version: "2.15.1" hive_ce_flutter: dependency: "direct main" description: name: hive_ce_flutter - sha256: f5bd57fda84402bca7557fedb8c629c96c8ea10fab4a542968d7b60864ca02cc + sha256: "26d656c9e8974f0732f1d09020e2d7b08ba841b8961a02dbfb6caf01474b0e9a" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.3" hive_ce_generator: dependency: "direct dev" description: name: hive_ce_generator - sha256: "8c677690c8ead43778ddf7ed8ff17e852dd5d22d082c75182b072842c0dc5055" + sha256: b19ac263cb37529513508ba47352c41e6de72ba879952898d9c18c9c8a955921 url: "https://pub.dev" source: hosted - version: "1.9.5" + version: "1.10.0" http: dependency: transitive description: name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.6.0" http_multi_server: dependency: transitive description: @@ -809,18 +809,18 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" + sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "8dfe08ea7fcf7467dbaf6889e72eebd5e0d6711caae201fdac780eb45232cd02" + sha256: a1cd1584fae64f6ecca63113fd5450e3483c097cc05e43a2f073330f62adcabe url: "https://pub.dev" source: hosted - version: "0.8.13+3" + version: "0.8.13+8" image_picker_for_web: dependency: transitive description: @@ -833,10 +833,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e + sha256: "997d100ce1dda5b1ba4085194c5e36c9f8a1fb7987f6a36ab677a344cd2dc986" url: "https://pub.dev" source: hosted - version: "0.8.13" + version: "0.8.13+2" image_picker_linux: dependency: transitive description: @@ -849,18 +849,18 @@ packages: dependency: transitive description: name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.11.1" image_picker_windows: dependency: transitive description: @@ -1017,10 +1017,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mgrs_dart: dependency: transitive description: @@ -1153,18 +1153,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" + sha256: "95c68a74d3cab950fd0ed8073d9fab15c1c06eb1f3eec68676e87aabc9ecee5a" url: "https://pub.dev" source: hosted - version: "2.2.18" + version: "2.2.21" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + sha256: "97390a0719146c7c3e71b6866c34f1cde92685933165c1c671984390d2aca776" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.4" path_provider_linux: dependency: transitive description: @@ -1377,18 +1377,18 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e + sha256: "07d552dbe8e71ed720e5205e760438ff4ecfb76ec3b32ea664350e2ca4b0c43b" url: "https://pub.dev" source: hosted - version: "2.4.13" + version: "2.4.16" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.6" shared_preferences_linux: dependency: transitive description: @@ -1478,10 +1478,10 @@ packages: dependency: transitive description: name: source_gen - sha256: ccf30b0c9fbcd79d8b6f5bfac23199fb354938436f62475e14aea0f29ee0f800 + sha256: "9098ab86015c4f1d8af6486b547b11100e73b193e1899015033cb3e14ad20243" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" source_helper: dependency: transitive description: @@ -1514,14 +1514,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" sqflite: dependency: transitive description: @@ -1614,26 +1606,26 @@ packages: dependency: "direct dev" description: name: test - sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" url: "https://pub.dev" source: hosted - version: "1.26.2" + version: "1.26.3" test_api: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.7" test_core: dependency: transitive description: name: test_core - sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" url: "https://pub.dev" source: hosted - version: "0.6.11" + version: "0.6.12" time: dependency: transitive description: @@ -1662,10 +1654,10 @@ packages: dependency: transitive description: name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.2" vector_graphics: dependency: transitive description: @@ -1710,10 +1702,10 @@ packages: dependency: transitive description: name: watcher - sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" + sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" web: dependency: transitive description: @@ -1750,10 +1742,10 @@ packages: dependency: transitive description: name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.14.0" + version: "5.15.0" win32_registry: dependency: transitive description: @@ -1803,5 +1795,5 @@ packages: source: hosted version: "2.1.0" sdks: - dart: ">=3.9.2 <4.0.0" - flutter: ">=3.35.4" + dart: ">=3.10.0 <4.0.0" + flutter: ">=3.35.7" diff --git a/packages/core/pubspec.yaml b/packages/core/pubspec.yaml index e66ad08..a1fce85 100644 --- a/packages/core/pubspec.yaml +++ b/packages/core/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none version: 1.3.0 environment: - sdk: ^3.9.2 + sdk: ^3.10.0 dependencies: flutter: diff --git a/packages/inspection/pubspec.lock b/packages/inspection/pubspec.lock index e4096fd..83af622 100644 --- a/packages/inspection/pubspec.lock +++ b/packages/inspection/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d url: "https://pub.dev" source: hosted - version: "85.0.0" + version: "91.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" + sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08 url: "https://pub.dev" source: hosted - version: "7.7.1" + version: "8.4.1" android_intent_plus: dependency: transitive description: @@ -77,10 +77,10 @@ packages: dependency: transitive description: name: build - sha256: ce76b1d48875e3233fde17717c23d1f60a91cc631597e49a400c89b475395b1d + sha256: dfb67ccc9a78c642193e0c2d94cb9e48c2c818b3178a86097d644acdcde6a8d9 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.2" build_config: dependency: transitive description: @@ -93,34 +93,18 @@ packages: dependency: transitive description: name: build_daemon - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 url: "https://pub.dev" source: hosted - version: "4.0.4" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: d1d57f7807debd7349b4726a19fd32ec8bc177c71ad0febf91a20f84cd2d4b46 - url: "https://pub.dev" - source: hosted - version: "3.0.3" + version: "4.1.1" build_runner: dependency: "direct dev" description: name: build_runner - sha256: b24597fceb695969d47025c958f3837f9f0122e237c6a22cb082a5ac66c3ca30 + sha256: "7b5b569f3df370590a85029148d6fc66c7d0201fc6f1847c07dd85d365ae9fcd" url: "https://pub.dev" source: hosted - version: "2.7.1" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "066dda7f73d8eb48ba630a55acb50c4a84a2e6b453b1cb4567f581729e794f7b" - url: "https://pub.dev" - source: hosted - version: "9.3.1" + version: "2.10.3" built_collection: dependency: transitive description: @@ -253,18 +237,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5" crypto: dependency: transitive description: name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" cupertino_icons: dependency: transitive description: @@ -293,10 +277,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.3" dartx: dependency: transitive description: @@ -325,10 +309,10 @@ packages: dependency: transitive description: name: device_info_plus - sha256: "49413c8ca514dea7633e8def233b25efdf83ec8522955cc2c0e3ad802927e7c6" + sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33 url: "https://pub.dev" source: hosted - version: "12.1.0" + version: "12.2.0" device_info_plus_platform_interface: dependency: transitive description: @@ -341,10 +325,10 @@ packages: dependency: transitive description: name: device_preview_plus - sha256: "2ebe9cf25ed46875c9c1b745d0438df9e4c49f7bcf9ea466c88efbcffcc73ab7" + sha256: eb3e67929c9f04759e0d3708ad91d1018235549bcf8699f8a94909684c6555ae url: "https://pub.dev" source: hosted - version: "2.5.1" + version: "2.5.5" dio: dependency: transitive description: @@ -397,34 +381,34 @@ packages: dependency: transitive description: name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + sha256: "80a877f5ec570c4fb3b40720a70b6f31e8bb1315a464b4d3e92fe82754d4b21a" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.3+3" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" + sha256: "44f24d102e368370951b98ffe86c7325b38349e634578312976607d28cc6d747" url: "https://pub.dev" source: hosted - version: "0.9.4+4" + version: "0.9.4+6" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" url: "https://pub.dev" source: hosted - version: "0.9.3+4" + version: "0.9.3+5" fixnum: dependency: transitive description: @@ -527,10 +511,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 + sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" url: "https://pub.dev" source: hosted - version: "2.0.30" + version: "2.0.32" flutter_rating_bar: dependency: transitive description: @@ -607,10 +591,10 @@ packages: dependency: transitive description: name: flutter_svg - sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 + sha256: "055de8921be7b8e8b98a233c7a5ef84b3a6fcc32f46f1ebf5b9bb3576d108355" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" flutter_test: dependency: "direct dev" description: flutter @@ -705,10 +689,10 @@ packages: dependency: transitive description: name: get_it - sha256: a4292e7cf67193f8e7c1258203104eb2a51ec8b3a04baa14695f4064c144297b + sha256: ae78de7c3f2304b8d81f2bb6e320833e5e81de942188542328f074978cc0efa9 url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.3.0" get_test: dependency: "direct dev" description: @@ -745,34 +729,34 @@ packages: dependency: transitive description: name: hive_ce - sha256: d678b1b2e315c18cd7ed8fd79eda25d70a1f3852d6988bfe5461cffe260c60aa + sha256: "81d39a03c4c0ba5938260a8c3547d2e71af59defecea21793d57fc3551f0d230" url: "https://pub.dev" source: hosted - version: "2.14.0" + version: "2.15.1" hive_ce_flutter: dependency: transitive description: name: hive_ce_flutter - sha256: f5bd57fda84402bca7557fedb8c629c96c8ea10fab4a542968d7b60864ca02cc + sha256: "26d656c9e8974f0732f1d09020e2d7b08ba841b8961a02dbfb6caf01474b0e9a" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.3" hive_ce_generator: dependency: "direct dev" description: name: hive_ce_generator - sha256: a169feeff2da9cc2c417ce5ae9bcebf7c8a95d7a700492b276909016ad70a786 + sha256: b19ac263cb37529513508ba47352c41e6de72ba879952898d9c18c9c8a955921 url: "https://pub.dev" source: hosted - version: "1.9.3" + version: "1.10.0" http: dependency: transitive description: name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.6.0" http_multi_server: dependency: transitive description: @@ -825,18 +809,18 @@ packages: dependency: transitive description: name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" + sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "8dfe08ea7fcf7467dbaf6889e72eebd5e0d6711caae201fdac780eb45232cd02" + sha256: a1cd1584fae64f6ecca63113fd5450e3483c097cc05e43a2f073330f62adcabe url: "https://pub.dev" source: hosted - version: "0.8.13+3" + version: "0.8.13+8" image_picker_for_web: dependency: transitive description: @@ -849,10 +833,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e + sha256: "997d100ce1dda5b1ba4085194c5e36c9f8a1fb7987f6a36ab677a344cd2dc986" url: "https://pub.dev" source: hosted - version: "0.8.13" + version: "0.8.13+2" image_picker_linux: dependency: transitive description: @@ -865,18 +849,18 @@ packages: dependency: transitive description: name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.11.1" image_picker_windows: dependency: transitive description: @@ -993,10 +977,10 @@ packages: dependency: transitive description: name: logger - sha256: "55d6c23a6c15db14920e037fe7e0dc32e7cdaf3b64b4b25df2d541b5b6b81c0c" + sha256: a7967e31b703831a893bbc3c3dd11db08126fe5f369b5c648a36f821979f5be3 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.6.2" logging: dependency: transitive description: @@ -1033,10 +1017,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mgrs_dart: dependency: transitive description: @@ -1057,10 +1041,10 @@ packages: dependency: transitive description: name: mockito - sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99" + sha256: "4feb43bc4eb6c03e832f5fcd637d1abb44b98f9cfa245c58e27382f58859f8f6" url: "https://pub.dev" source: hosted - version: "5.5.0" + version: "5.5.1" mocktail: dependency: "direct dev" description: @@ -1169,18 +1153,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" + sha256: "95c68a74d3cab950fd0ed8073d9fab15c1c06eb1f3eec68676e87aabc9ecee5a" url: "https://pub.dev" source: hosted - version: "2.2.18" + version: "2.2.21" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + sha256: "97390a0719146c7c3e71b6866c34f1cde92685933165c1c671984390d2aca776" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.4" path_provider_linux: dependency: transitive description: @@ -1355,7 +1339,7 @@ packages: path: "../core" relative: true source: path - version: "1.2.0+2" + version: "1.3.0" rive: dependency: transitive description: @@ -1400,18 +1384,18 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e + sha256: "07d552dbe8e71ed720e5205e760438ff4ecfb76ec3b32ea664350e2ca4b0c43b" url: "https://pub.dev" source: hosted - version: "2.4.13" + version: "2.4.16" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.6" shared_preferences_linux: dependency: transitive description: @@ -1501,10 +1485,10 @@ packages: dependency: transitive description: name: source_gen - sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3" + sha256: "9098ab86015c4f1d8af6486b547b11100e73b193e1899015033cb3e14ad20243" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.2" source_helper: dependency: transitive description: @@ -1537,14 +1521,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" sqflite: dependency: transitive description: @@ -1637,26 +1613,26 @@ packages: dependency: "direct dev" description: name: test - sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" url: "https://pub.dev" source: hosted - version: "1.26.2" + version: "1.26.3" test_api: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.7" test_core: dependency: transitive description: name: test_core - sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" url: "https://pub.dev" source: hosted - version: "0.6.11" + version: "0.6.12" time: dependency: transitive description: @@ -1665,14 +1641,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.5" - timing: - dependency: transitive - description: - name: timing - sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" - url: "https://pub.dev" - source: hosted - version: "1.0.2" typed_data: dependency: transitive description: @@ -1693,10 +1661,10 @@ packages: dependency: transitive description: name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.2" vector_graphics: dependency: transitive description: @@ -1741,10 +1709,10 @@ packages: dependency: transitive description: name: watcher - sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" + sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" web: dependency: transitive description: @@ -1781,10 +1749,10 @@ packages: dependency: transitive description: name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.14.0" + version: "5.15.0" win32_registry: dependency: transitive description: @@ -1834,5 +1802,5 @@ packages: source: hosted version: "2.1.0" sdks: - dart: ">=3.9.2 <4.0.0" - flutter: ">=3.35.4" + dart: ">=3.10.0 <4.0.0" + flutter: ">=3.35.7" diff --git a/packages/inspection/pubspec.yaml b/packages/inspection/pubspec.yaml index 39787df..e0e4d7a 100644 --- a/packages/inspection/pubspec.yaml +++ b/packages/inspection/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 1.2.0 environment: - sdk: ^3.9.2 + sdk: ^3.10.0 dependencies: flutter: diff --git a/packages/livestock/pubspec.yaml b/packages/livestock/pubspec.yaml index 696d390..bef8e9d 100644 --- a/packages/livestock/pubspec.yaml +++ b/packages/livestock/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: 'none' # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.9.2 + sdk: ^3.10.0 dependencies: diff --git a/pubspec.lock b/pubspec.lock index 34029ea..e9b5628 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: dd3d2ad434b9510001d089e8de7556d50c834481b9abc2891a0184a8493a19dc + sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d url: "https://pub.dev" source: hosted - version: "89.0.0" + version: "91.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: c22b6e7726d1f9e5db58c7251606076a71ca0dbcf76116675edfadbec0c9e875 + sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08 url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.4.1" android_intent_plus: dependency: transitive description: @@ -77,10 +77,10 @@ packages: dependency: transitive description: name: build - sha256: "5b887c55a0f734b433b3b2d89f9cd1f99eb636b17e268a5b4259258bc916504b" + sha256: dfb67ccc9a78c642193e0c2d94cb9e48c2c818b3178a86097d644acdcde6a8d9 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.2" build_config: dependency: transitive description: @@ -93,18 +93,18 @@ packages: dependency: transitive description: name: build_daemon - sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 url: "https://pub.dev" source: hosted - version: "4.0.4" + version: "4.1.1" build_runner: dependency: "direct dev" description: name: build_runner - sha256: a9461b8e586bf018dd4afd2e13b49b08c6a844a4b226c8d1d10f3a723cdd78c3 + sha256: "7b5b569f3df370590a85029148d6fc66c7d0201fc6f1847c07dd85d365ae9fcd" url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.10.3" built_collection: dependency: transitive description: @@ -237,18 +237,18 @@ packages: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5" crypto: dependency: transitive description: name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" cupertino_icons: dependency: "direct main" description: @@ -277,10 +277,10 @@ packages: dependency: transitive description: name: dart_style - sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697 + sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" dartx: dependency: transitive description: @@ -309,10 +309,10 @@ packages: dependency: transitive description: name: device_info_plus - sha256: "49413c8ca514dea7633e8def233b25efdf83ec8522955cc2c0e3ad802927e7c6" + sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33 url: "https://pub.dev" source: hosted - version: "12.1.0" + version: "12.2.0" device_info_plus_platform_interface: dependency: transitive description: @@ -325,10 +325,10 @@ packages: dependency: transitive description: name: device_preview_plus - sha256: "2ebe9cf25ed46875c9c1b745d0438df9e4c49f7bcf9ea466c88efbcffcc73ab7" + sha256: eb3e67929c9f04759e0d3708ad91d1018235549bcf8699f8a94909684c6555ae url: "https://pub.dev" source: hosted - version: "2.5.1" + version: "2.5.5" dio: dependency: transitive description: @@ -381,34 +381,34 @@ packages: dependency: transitive description: name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + sha256: "80a877f5ec570c4fb3b40720a70b6f31e8bb1315a464b4d3e92fe82754d4b21a" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.3+3" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" + sha256: "44f24d102e368370951b98ffe86c7325b38349e634578312976607d28cc6d747" url: "https://pub.dev" source: hosted - version: "0.9.4+4" + version: "0.9.4+6" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" url: "https://pub.dev" source: hosted - version: "0.9.3+4" + version: "0.9.3+5" fixnum: dependency: transitive description: @@ -524,10 +524,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 + sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" url: "https://pub.dev" source: hosted - version: "2.0.30" + version: "2.0.32" flutter_rating_bar: dependency: transitive description: @@ -604,10 +604,10 @@ packages: dependency: transitive description: name: flutter_svg - sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 + sha256: "055de8921be7b8e8b98a233c7a5ef84b3a6fcc32f46f1ebf5b9bb3576d108355" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" flutter_test: dependency: "direct dev" description: flutter @@ -699,10 +699,10 @@ packages: dependency: transitive description: name: get_it - sha256: a4292e7cf67193f8e7c1258203104eb2a51ec8b3a04baa14695f4064c144297b + sha256: ae78de7c3f2304b8d81f2bb6e320833e5e81de942188542328f074978cc0efa9 url: "https://pub.dev" source: hosted - version: "8.2.0" + version: "8.3.0" get_test: dependency: "direct dev" description: @@ -747,10 +747,10 @@ packages: dependency: transitive description: name: hive_ce_flutter - sha256: f5bd57fda84402bca7557fedb8c629c96c8ea10fab4a542968d7b60864ca02cc + sha256: "26d656c9e8974f0732f1d09020e2d7b08ba841b8961a02dbfb6caf01474b0e9a" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.3" hive_ce_generator: dependency: "direct dev" description: @@ -763,10 +763,10 @@ packages: dependency: transitive description: name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.6.0" http_multi_server: dependency: transitive description: @@ -819,18 +819,18 @@ packages: dependency: transitive description: name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" + sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "8dfe08ea7fcf7467dbaf6889e72eebd5e0d6711caae201fdac780eb45232cd02" + sha256: a1cd1584fae64f6ecca63113fd5450e3483c097cc05e43a2f073330f62adcabe url: "https://pub.dev" source: hosted - version: "0.8.13+3" + version: "0.8.13+8" image_picker_for_web: dependency: transitive description: @@ -843,10 +843,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e + sha256: "997d100ce1dda5b1ba4085194c5e36c9f8a1fb7987f6a36ab677a344cd2dc986" url: "https://pub.dev" source: hosted - version: "0.8.13" + version: "0.8.13+2" image_picker_linux: dependency: transitive description: @@ -859,18 +859,18 @@ packages: dependency: transitive description: name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.11.1" image_picker_windows: dependency: transitive description: @@ -1032,10 +1032,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mgrs_dart: dependency: transitive description: @@ -1160,18 +1160,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" + sha256: "95c68a74d3cab950fd0ed8073d9fab15c1c06eb1f3eec68676e87aabc9ecee5a" url: "https://pub.dev" source: hosted - version: "2.2.18" + version: "2.2.21" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + sha256: "97390a0719146c7c3e71b6866c34f1cde92685933165c1c671984390d2aca776" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.4" path_provider_linux: dependency: transitive description: @@ -1420,18 +1420,18 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e + sha256: "07d552dbe8e71ed720e5205e760438ff4ecfb76ec3b32ea664350e2ca4b0c43b" url: "https://pub.dev" source: hosted - version: "2.4.13" + version: "2.4.16" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.6" shared_preferences_linux: dependency: transitive description: @@ -1505,10 +1505,10 @@ packages: dependency: transitive description: name: source_gen - sha256: ccf30b0c9fbcd79d8b6f5bfac23199fb354938436f62475e14aea0f29ee0f800 + sha256: "9098ab86015c4f1d8af6486b547b11100e73b193e1899015033cb3e14ad20243" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" source_helper: dependency: transitive description: @@ -1525,14 +1525,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" sqflite: dependency: transitive description: @@ -1633,10 +1625,10 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.7" time: dependency: transitive description: @@ -1665,10 +1657,10 @@ packages: dependency: transitive description: name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.2" vector_graphics: dependency: transitive description: @@ -1713,10 +1705,10 @@ packages: dependency: transitive description: name: watcher - sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" + sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" web: dependency: transitive description: @@ -1753,10 +1745,10 @@ packages: dependency: transitive description: name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.14.0" + version: "5.15.0" win32_registry: dependency: transitive description: @@ -1806,5 +1798,5 @@ packages: source: hosted version: "2.1.0" sdks: - dart: ">=3.9.2 <4.0.0" - flutter: ">=3.35.4" + dart: ">=3.10.0 <4.0.0" + flutter: ">=3.35.7" diff --git a/pubspec.yaml b/pubspec.yaml index 65b7df0..f2adbe2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,7 +13,6 @@ dependencies: #UI cupertino_icons: ^1.0.8 flutter_launcher_icons: ^0.14.4 - #rasadyar packages rasadyar_core: path: ./packages/core