diff --git a/assets/images/poultry_action.webp b/assets/images/poultry_action.webp new file mode 100644 index 0000000..12da843 Binary files /dev/null and b/assets/images/poultry_action.webp differ diff --git a/assets/images/select_role.webp b/assets/images/select_role.webp new file mode 100644 index 0000000..8f84f4f Binary files /dev/null and b/assets/images/select_role.webp differ diff --git a/packages/chicken/lib/presentation/pages/poultry_science/poultry_action/logic.dart b/packages/chicken/lib/presentation/pages/poultry_science/poultry_action/logic.dart new file mode 100644 index 0000000..bc4c8c6 --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_science/poultry_action/logic.dart @@ -0,0 +1,5 @@ +import 'package:rasadyar_core/core.dart'; + +class PoultryActionLogic extends GetxController { + RxList actions = ['a'].obs; +} diff --git a/packages/chicken/lib/presentation/pages/poultry_science/poultry_action/view.dart b/packages/chicken/lib/presentation/pages/poultry_science/poultry_action/view.dart new file mode 100644 index 0000000..9528f5f --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_science/poultry_action/view.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:rasadyar_chicken/presentation/pages/role/view.dart'; +import 'package:rasadyar_core/core.dart'; +import 'package:rasadyar_core/presentation/common/assets.gen.dart'; + +import '../../../widget/app_bar.dart'; +import 'logic.dart'; + +class PoultryActionPage extends GetView { + PoultryActionPage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: chickenAppBar( + hasBack: false, + hasFilter: false, + hasSearch: false, + isBase: false, + ), + body: Column( + children: [ + Assets.images.poultryAction.image( + height: 212.h, + width: Get.width.w, + fit: BoxFit.cover, + ), + ObxValue((data) { + return Expanded( + child: GridView.builder( + physics: BouncingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 4, + mainAxisSpacing: 12.h, + crossAxisSpacing: 12.w, + childAspectRatio: 2, + ), + itemCount: 4, + hitTestBehavior: HitTestBehavior.opaque, + itemBuilder: (BuildContext context, int index) { + return roleCard( + title: data[index], + onTap: () async { + + }, + ); + }, + ), + ); + }, controller.actions), + ], + ), + ); + } +} diff --git a/packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart b/packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart index ac1e84e..c008b24 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/profile/logic.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:rasadyar_chicken/data/models/request/change_password/change_password_request_model.dart'; import 'package:rasadyar_chicken/data/models/response/iran_province_city/iran_province_city_model.dart'; import 'package:rasadyar_chicken/data/models/response/user_profile/user_profile.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart'; @@ -10,7 +9,9 @@ class PoultryScienceProfileLogic extends GetxController { RxInt selectedInformationType = 0.obs; Rxn birthDate = Rxn(); - Rx> userProfile = Rx>(Resource.loading()); + Rx> userProfile = Rx>( + Resource.loading(), + ); TextEditingController nameController = TextEditingController(); TextEditingController lastNameController = TextEditingController(); @@ -52,7 +53,8 @@ class PoultryScienceProfileLogic extends GetxController { lastNameController.text = data.data?.lastName ?? ''; nationalCodeController.text = data.data?.nationalCode ?? ''; nationalIdController.text = data.data?.nationalId ?? ''; - birthdayController.text = data.data?.birthday?.toJalali.formatCompactDate() ?? ''; + birthdayController.text = + data.data?.birthday?.toJalali.formatCompactDate() ?? ''; birthDate.value = data.data?.birthday?.toJalali; selectedProvince.value = IranProvinceCityModel( name: data.data?.province ?? '', @@ -72,9 +74,9 @@ class PoultryScienceProfileLogic extends GetxController { } Future getUserProfile() async { - userProfile.value = Resource.loading(); + /* userProfile.value = Resource.loading(); await safeCall( - call: () async => await rootLogic.chickenRepository.getUserProfile( + call: () async => await rootLogic.poultryRepository.getUserProfile( token: rootLogic.tokenService.accessToken.value!, ), onSuccess: (result) { @@ -83,11 +85,11 @@ class PoultryScienceProfileLogic extends GetxController { } }, onError: (error, stackTrace) {}, - ); + );*/ } Future getCites() async { - await safeCall( + /* await safeCall( call: () => rootLogic.chickenRepository.getCity(provinceName: selectedProvince.value?.name ?? ''), onSuccess: (result) { @@ -95,11 +97,11 @@ class PoultryScienceProfileLogic extends GetxController { cites.value = result; } }, - ); + );*/ } Future updateUserProfile() async { - UserProfile userProfile = UserProfile( + /* UserProfile userProfile = UserProfile( firstName: nameController.text, lastName: lastNameController.text, nationalCode: nationalCodeController.text, @@ -121,11 +123,11 @@ class PoultryScienceProfileLogic extends GetxController { onError: (error, stackTrace) { isOnLoading.value = false; }, - ); + );*/ } Future updatePassword() async { - if (formKey.currentState?.validate() ?? false) { + /*if (formKey.currentState?.validate() ?? false) { ChangePasswordRequestModel model = ChangePasswordRequestModel( username: userProfile.value.data?.mobile, password: newPasswordController.text, @@ -137,7 +139,7 @@ class PoultryScienceProfileLogic extends GetxController { model: model, ), ); - } + }*/ } void clearPasswordForm() { diff --git a/packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart b/packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart index b0f9ef6..b313cd8 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/profile/view.dart @@ -458,34 +458,6 @@ class PoultryScienceProfilePage extends GetView { ); } - Widget _provinceWidget() { - return Obx(() { - return OverlayDropdownWidget( - items: controller.rootLogic.provinces, - onChanged: (value) { - controller.selectedProvince.value = value; - }, - selectedItem: controller.selectedProvince.value, - itemBuilder: (item) => Text(item.name ?? 'بدون نام'), - labelBuilder: (item) => Text(item?.name ?? 'انتخاب استان'), - ); - }); - } - - Widget _cityWidget() { - return ObxValue((data) { - return OverlayDropdownWidget( - items: data, - onChanged: (value) { - controller.selectedCity.value = value; - }, - selectedItem: controller.selectedCity.value, - itemBuilder: (item) => Text(item.name ?? 'بدون نام'), - labelBuilder: (item) => Text(item?.name ?? 'انتخاب شهر'), - ); - }, controller.cites); - } - Widget changePasswordBottomSheet() { return BaseBottomSheet( height: 400.h, 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 5ce5e8e..8e641ce 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/root/logic.dart @@ -1,51 +1,33 @@ -import 'package:flutter/widgets.dart'; -import 'package:rasadyar_chicken/data/data_source/local/chicken_local.dart'; +import 'package:flutter/material.dart'; import 'package:rasadyar_chicken/data/di/chicken_di.dart'; -import 'package:rasadyar_chicken/data/models/local/widely_used_local_model.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/roles_products/roles_products.dart'; import 'package:rasadyar_chicken/data/repositories/poultry_science/poultry_science_repository.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/home/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/steward/buy/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/steward/home/view.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/view.dart'; import 'package:rasadyar_chicken/presentation/pages/steward/profile/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/steward/sale/view.dart'; -import 'package:rasadyar_chicken/presentation/pages/steward/segmentation/view.dart'; -import 'package:rasadyar_chicken/presentation/routes/routes.dart'; import 'package:rasadyar_chicken/presentation/utils/utils.dart'; import 'package:rasadyar_core/core.dart'; enum ErrorLocationType { serviceDisabled, permissionDenied, none } class PoultryScienceRootLogic extends GetxController { - RxInt currentPage = 2.obs; - List pages = [BuyPage(), SalePage(), PoultryScienceHomePage(), SegmentationPage(), ProfilePage()]; - + RxInt currentPage = 1.obs; + List pages = [ + PoultryActionPage(), + PoultryScienceHomePage(), + ProfilePage(), + ]; late DioRemote dioRemote; var tokenService = Get.find(); late PoultryScienceRepository poultryRepository; RxList errorLocationType = RxList(); RxMap homeExpandedList = RxMap(); - Rxn inventoryModel = Rxn(); - RxList provinces = [].obs; - - // Cancel tokens for API calls - CancelToken? _inventoryCancelToken; - CancelToken? _provincesCancelToken; @override void onInit() { super.onInit(); - poultryRepository = diChicken.get(); } - @override - void onReady() { - super.onReady(); - } - @override void onClose() { super.onClose(); diff --git a/packages/chicken/lib/presentation/pages/poultry_science/root/view.dart b/packages/chicken/lib/presentation/pages/poultry_science/root/view.dart index 9a68572..35b4c8d 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/root/view.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/root/view.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:rasadyar_chicken/chicken.dart'; -import 'package:rasadyar_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart'; import 'package:rasadyar_core/core.dart'; import 'logic.dart'; @@ -43,7 +41,7 @@ class PoultryScienceRootPage extends GetView { backgroundColor: AppColor.bgLight, body: IndexedStack( children: [ - Navigator( + /* Navigator( key: Get.nestedKey(0), onGenerateRoute: (settings) { final page = ChickenPages.pages.firstWhere( @@ -66,18 +64,21 @@ class PoultryScienceRootPage extends GetView { return buildRouteFromGetPage(page); }, + ),*/ + Navigator( + key: Get.nestedKey(0), + onGenerateRoute: (settings) => + GetPageRoute(page: () => controller.pages[0]), + ), + Navigator( + key: Get.nestedKey(1), + onGenerateRoute: (settings) => + GetPageRoute(page: () => controller.pages[1]), ), Navigator( key: Get.nestedKey(2), - onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[2]), - ), - Navigator( - key: Get.nestedKey(3), - onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[3]), - ), - Navigator( - key: Get.nestedKey(4), - onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[4]), + onGenerateRoute: (settings) => + GetPageRoute(page: () => controller.pages[1]), ), ], index: data.value, @@ -101,7 +102,7 @@ class PoultryScienceRootPage extends GetView { icon: Assets.vec.homeSvg.path, isSelected: controller.currentPage.value == 1, onTap: () { - /* Get.nestedKey(1)?.currentState?.popUntil((route) => route.isFirst); + /* Get.nestedKey(1)?.currentState?.popUntil((route) => route.isFirst); Get.nestedKey(0)?.currentState?.popUntil((route) => route.isFirst);*/ controller.changePage(1); }, @@ -111,7 +112,7 @@ class PoultryScienceRootPage extends GetView { icon: Assets.vec.profileCircleSvg.path, isSelected: controller.currentPage.value == 2, onTap: () { - /* Get.nestedKey(1)?.currentState?.popUntil((route) => route.isFirst); + /* Get.nestedKey(1)?.currentState?.popUntil((route) => route.isFirst); Get.nestedKey(0)?.currentState?.popUntil((route) => route.isFirst); */ controller.changePage(2); @@ -123,6 +124,4 @@ class PoultryScienceRootPage extends GetView { ); }, controller.currentPage); } - - } diff --git a/packages/chicken/lib/presentation/pages/role/view.dart b/packages/chicken/lib/presentation/pages/role/view.dart index 61a4be5..ec0f3aa 100644 --- a/packages/chicken/lib/presentation/pages/role/view.dart +++ b/packages/chicken/lib/presentation/pages/role/view.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:rasadyar_chicken/data/common/fa_user_role.dart'; -import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart'; +import 'package:rasadyar_chicken/presentation/widget/app_bar.dart'; import 'package:rasadyar_core/core.dart'; import 'logic.dart'; @@ -10,111 +10,80 @@ class RolePage extends GetView { @override Widget build(BuildContext context) { - return BasePage( - hasSearch: true, - hasBack: false, - isBase: true, - routes: ['انتخاب نقش'], - widgets: [ - ObxValue((data) { - return Expanded( - child: GridView.builder( - physics: BouncingScrollPhysics(), - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - mainAxisSpacing: 12.h, - crossAxisSpacing: 12.w, - childAspectRatio: 2, - ), - itemCount: data.length, - hitTestBehavior: HitTestBehavior.opaque, - itemBuilder: (BuildContext context, int index) { - Map role = getFaUserRoleWithOnTap(data[index]); - return roleCard( - title: role.keys.first, - onTap: () async { - String route = role.values.first; - await controller.gService.saveSelectedRole( - Module.chicken, - route, - ); - Get.offAllNamed(route); - }, - ); - }, - ), - ); - }, controller.roles), - ], - ); - - /* return Scaffold( - body: Stack( - alignment: Alignment.center, + return Scaffold( + appBar: chickenAppBar( + hasBack: false, + hasFilter: false, + hasSearch: false, + isBase: false, + ), + body: Column( children: [ - Assets.rive.shapes.rive(fit: BoxFit.cover), - Positioned.fill( - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20), - child: Container(color: Colors.white.withValues(alpha: 0.2)), - ), + Assets.images.selectRole.image( + height: 212.h, + width: Get.width.w, + fit: BoxFit.cover, ), - Container( - height: 400.h, - padding: EdgeInsets.symmetric(horizontal: 16.w), - child: Card( - child: Column( - children: [ - SizedBox(height: 12.h), - Text( - 'انتخاب نقش', - style: AppFonts.yekan20Bold.copyWith(color: AppColor.textColor), - ), - ObxValue((data) { - return Expanded( - child: GridView.builder( - physics: BouncingScrollPhysics(), - gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( - maxCrossAxisExtent: 250, - mainAxisSpacing: 12, - crossAxisSpacing: 12, - childAspectRatio: 1.5, - ), - itemCount: data.length, - hitTestBehavior: HitTestBehavior.opaque, - itemBuilder: (BuildContext context, int index) { - return roleCard(title: getFaUserRole(data[index]), onTap: () {}); - }, - ), - ); - }, controller.roles), - ], + ObxValue((data) { + return Expanded( + child: GridView.builder( + physics: BouncingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + mainAxisSpacing: 12.h, + crossAxisSpacing: 12.w, + childAspectRatio: 2, + ), + itemCount: data.length, + hitTestBehavior: HitTestBehavior.opaque, + itemBuilder: (BuildContext context, int index) { + Map role = getFaUserRoleWithOnTap(data[index]); + return roleCard( + title: role.keys.first, + onTap: () async { + String route = role.values.first; + await controller.gService.saveSelectedRole( + Module.chicken, + route, + ); + Get.offAllNamed(route); + }, + ); + }, ), - ), - ), + ); + }, controller.roles), ], ), - );*/ - } - - Widget roleCard({required String title, Function()? onTap}) { - return Container( - width: 128.w, - height: 48.h, - margin: EdgeInsets.all(8.w), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8.r), - border: Border.all(color: AppColor.blueNormal, width: 1.w), - ), - child: InkWell( - onTap: onTap, - child: Center( - child: Text( - title, - style: AppFonts.yekan12Bold.copyWith(color: AppColor.blueNormal), - ), - ), - ), ); } + + +} + + +Widget roleCard({ + required String title, + Function()? onTap, + int? width, + int? height, +}) { + return Container( + width: width?.w ?? 128.w, + height: height?.h ?? 48.h, + margin: EdgeInsets.all(8.w), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.r), + border: Border.all(color: AppColor.blueNormal, width: 1.w), + ), + child: InkWell( + onTap: onTap, + child: Center( + child: Text( + title, + style: AppFonts.yekan12Bold.copyWith(color: AppColor.blueNormal), + ), + ), + ), + ); } diff --git a/packages/chicken/lib/presentation/routes/pages.dart b/packages/chicken/lib/presentation/routes/pages.dart index 9414da7..a9a4b1a 100644 --- a/packages/chicken/lib/presentation/routes/pages.dart +++ b/packages/chicken/lib/presentation/routes/pages.dart @@ -1,6 +1,8 @@ import 'package:rasadyar_chicken/presentation/pages/auth/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/auth/view.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/home/logic.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_science/poultry_action/logic.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_science/profile/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/logic.dart'; import 'package:rasadyar_chicken/presentation/pages/poultry_science/root/view.dart'; import 'package:rasadyar_chicken/presentation/pages/role/logic.dart'; @@ -147,13 +149,11 @@ sealed class ChickenPages { middlewares: [AuthMiddleware()], binding: BindingsBuilder(() { Get.lazyPut(() => BaseLogic()); + Get.lazyPut(() => SearchLogic()); Get.lazyPut(() => PoultryScienceRootLogic()); Get.lazyPut(() => PoultryScienceHomeLogic()); - Get.lazyPut(() => BuyLogic()); - Get.lazyPut(() => SaleLogic()); - Get.lazyPut(() => ProfileLogic()); - Get.lazyPut(() => SegmentationLogic()); - Get.lazyPut(() => SearchLogic()); + Get.lazyPut(() => PoultryScienceProfileLogic()); + Get.lazyPut(() => PoultryActionLogic()); }), ), diff --git a/packages/chicken/lib/presentation/widget/base_page/view.dart b/packages/chicken/lib/presentation/widget/base_page/view.dart index 4159fc2..d816b3b 100644 --- a/packages/chicken/lib/presentation/widget/base_page/view.dart +++ b/packages/chicken/lib/presentation/widget/base_page/view.dart @@ -6,7 +6,7 @@ import 'package:rasadyar_chicken/presentation/widget/search/logic.dart'; import 'package:rasadyar_chicken/presentation/widget/search/view.dart'; import 'package:rasadyar_core/core.dart'; -class BasePage extends StatefulWidget { +class BasePage extends StatefulWidget { const BasePage({ super.key, this.routes, diff --git a/packages/core/lib/presentation/common/assets.gen.dart b/packages/core/lib/presentation/common/assets.gen.dart index b40c11d..de55139 100644 --- a/packages/core/lib/presentation/common/assets.gen.dart +++ b/packages/core/lib/presentation/common/assets.gen.dart @@ -404,8 +404,14 @@ class $AssetsImagesGen { /// File path: assets/images/place_holder.png AssetGenImage get placeHolder => const AssetGenImage('assets/images/place_holder.png'); + /// File path: assets/images/poultry_action.webp + AssetGenImage get poultryAction => const AssetGenImage('assets/images/poultry_action.webp'); + + /// File path: assets/images/select_role.webp + AssetGenImage get selectRole => const AssetGenImage('assets/images/select_role.webp'); + /// List of all assets - List get values => [chicken, innerSplash, outterSplash, placeHolder]; + List get values => [chicken, innerSplash, outterSplash, placeHolder, poultryAction, selectRole]; } class $AssetsLogosGen {