import 'package:flutter/cupertino.dart' hide LinearGradient; import 'package:flutter/material.dart'; import 'package:rasadyar_chicken/features/poultry_science/presentation/routes/routes.dart'; import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart'; import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart'; import 'package:rasadyar_core/core.dart'; import 'package:rasadyar_core/presentation/widget/custom/information_card_widget.dart'; import 'logic.dart'; class PoultryScienceHomePage extends GetView { const PoultryScienceHomePage({super.key}); @override Widget build(BuildContext context) { return ChickenBasePage( isBase: true, hasNotification: true, hasNews: true, scrollable: true, child: Column( children: [ SizedBox(height: 18.h), InkWell( onTap: () { controller.isExpanded.value = !controller.isExpanded.value; }, child: Stack( clipBehavior: Clip.none, children: [ Container( margin: EdgeInsetsGeometry.all(6), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), border: Border.all( width: 0.50, color: const Color(0xFFA9A9A9), ), ), child: ObxValue((data) { return AnimatedSize( duration: Duration(milliseconds: 300), child: data.value ? mainItemWidget() : mainItemWidgetExpanded(), ); }, controller.isExpanded), ), Positioned( top: -10, right: 20, child: Container( height: 32.h, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), border: Border.all( width: 0.50, color: const Color(0xFFA9A9A9), ), ), padding: EdgeInsets.symmetric(horizontal: 8), child: Row( spacing: 8, children: [ Assets.vec.chicken2Svg.svg( width: 16.w, height: 16.h, colorFilter: ColorFilter.mode( AppColor.blueDark, BlendMode.srcIn, ), ), Text( 'اطلاعات فارم‌ها', textAlign: TextAlign.right, style: AppFonts.yekan16Bold.copyWith( color: AppColor.iconColor, ), ), ], ), ), ), ], ), ), SizedBox(height: 10), widelyWidget(), SizedBox(height: 20), ], ), ); } Padding mainItemWidget() { return Padding( padding: const EdgeInsets.all(8.0), child: Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 8), firstTagInformation(), secondTagInformation(), ], ), ); } Padding mainItemWidgetExpanded() { return Padding( padding: const EdgeInsets.all(8.0), child: Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 8), /* Row( spacing: 8, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( width: 40, height: 40, decoration: ShapeDecoration( shape: RoundedRectangleBorder( side: BorderSide(width: 0.25, color: const Color(0xFFB0B0B0)), borderRadius: BorderRadius.circular(4), ), ), child: Assets.images.liveChicken.image( width: 40.w, height: 40.h, fit: BoxFit.cover, ), ), Text( 'فارم ها', textAlign: TextAlign.right, style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDarkActive), ), Spacer(), AnimatedRotation( turns: 180, duration: Duration(milliseconds: 3000), child: Icon(CupertinoIcons.chevron_up, size: 18), ), ], ),*/ SizedBox(height: 8), firstTagInformation(), Row( children: [ Text( 'اطلاعات جوجه‌ریزی', textAlign: TextAlign.right, style: AppFonts.yekan16, ), ], ), secondTagInformation(), thirdTagInformation(), ageCardInformation(), ], ), ); } Widget firstTagInformation() { return Padding( padding: const EdgeInsets.fromLTRB(0, 8, 0, 13), child: ObxValue((data) { List? items = data['first']!; return Row( spacing: 8, children: List.generate( items.length, (index) => Expanded(child: InformationTag(data: items[index])), ), ); }, controller.tagInfo), ); } Widget secondTagInformation() { return Padding( padding: const EdgeInsets.fromLTRB(0, 8, 0, 13), child: ObxValue((data) { List? items = data['second']!; return Row( spacing: 8, children: List.generate( items.length, (index) => Expanded(child: InformationTag(data: items[index])), ), ); }, controller.tagInfo), ); } Widget thirdTagInformation() { return Padding( padding: const EdgeInsets.fromLTRB(0, 8, 0, 13), child: ObxValue((data) { List? items = data['third']!; return Row( spacing: 8, children: List.generate( items.length, (index) => Expanded(child: InformationTag(data: items[index])), ), ); }, controller.tagInfo), ); } Widget ageCardInformation() { return Padding( padding: EdgeInsets.fromLTRB(30.w, 8, 30.w, 13), child: ObxValue((data) { return Row( spacing: 8, children: List.generate( data.length, (index) => Expanded(child: InformationCard(data: data[index])), ), ); }, controller.ageCardData), ); } //region Widely Used Widget Widget widelyWidget() { return Container( margin: EdgeInsetsGeometry.all(6), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), border: Border.all(width: 0.50, color: const Color(0xFFA9A9A9)), ), child: Stack( clipBehavior: Clip.none, children: [ Padding( padding: EdgeInsets.fromLTRB(12.w, 24.h, 12.w, 16.h), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ widelyUsed( title: 'بازرسی', iconPath: Assets.vec.cubeSearchSvg.path, isOnEdit: false, cardColor: AppColor.greenLightActive, labelColor: AppColor.greenNormal, textColor: AppColor.textColor, onTap: () async { controller.rootLogic.currentPage.value = 0; Get.toNamed( PoultryScienceRoutes.inspectionPoultryScience, id: poultryFirstKey, ); }, ), widelyUsed( title: 'ثبت کشتار', iconPath: Assets.vec.noteRemoveSvg.path, isOnEdit: false, cardColor: AppColor.blueLightActive, labelColor: AppColor.blueNormalOld, textColor: AppColor.textColor, onTap: () async { controller.rootLogic.currentPage.value = 0; Get.toNamed( PoultryScienceRoutes.genocidePoultryScience, id: poultryFirstKey, ); }, ), widelyUsed( title: 'فارم ها', iconPath: Assets.vec.cubeScanSvg.path, cardColor: Color(0xFFFFCFA3), labelColor: Color(0xFFF68D2B), textColor: AppColor.textColor, isOnEdit: false, onTap: () async { controller.rootLogic.currentPage.value = 0; Get.toNamed( PoultryScienceRoutes.farmPoultryScience, id: poultryFirstKey, ); }, ), widelyUsed( title: 'جوجه‌ریزی فعال', iconPath: Assets.vec.boxTickSvg.path, isOnEdit: false, cardColor: Color(0xFFD9BEFF), labelColor: Color(0xFF9757FF), textColor: AppColor.textColor, onTap: () async { controller.rootLogic.currentPage.value = 0; Get.toNamed( PoultryScienceRoutes.activeHatchingPoultryScience, id: poultryFirstKey, ); }, ), ], ), ), Positioned( top: -17, right: 11, child: Container( padding: EdgeInsets.all(4), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8), border: Border.all(width: 0.50, color: const Color(0xFFA9A9A9)), ), child: Text( 'پر کاربردها', textAlign: TextAlign.right, style: AppFonts.yekan16, ), ), ), ], ), ); } Widget widelyUsed({ required String title, required String iconPath, required VoidCallback onTap, required bool isOnEdit, Color? cardColor, Color? labelColor, Color? textColor, }) { return GestureDetector( onTap: !isOnEdit ? onTap : null, child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.start, spacing: 4, children: [ Stack( clipBehavior: Clip.none, children: [ Container( width: 48, height: 48, padding: EdgeInsets.all(4), decoration: ShapeDecoration( color: cardColor ?? Color(0xFFBECDFF), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: Container( width: 40, height: 40, decoration: ShapeDecoration( color: labelColor ?? AppColor.blueNormal, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: SvgGenImage.vec(iconPath).svg( width: 24, height: 24, colorFilter: ColorFilter.mode( Colors.white, BlendMode.srcIn, ), fit: BoxFit.cover, ), ), ), Visibility( visible: isOnEdit, child: Container( width: 48, height: 48, padding: EdgeInsets.all(4), decoration: ShapeDecoration( color: Colors.white60, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), ), ), Visibility( visible: isOnEdit, child: Positioned( top: -15, left: -12, child: SizedBox( width: 32.w, height: 32.h, child: GestureDetector( onTap: () {}, behavior: HitTestBehavior.translucent, child: Center( child: Container( width: 16, height: 16, decoration: BoxDecoration( shape: BoxShape.circle, color: Colors.white, ), alignment: Alignment.center, child: Icon( CupertinoIcons.minus, color: AppColor.error, size: 15, ), ), ), ), ), ), ), ], ), Text( title, style: AppFonts.yekan10Bold.copyWith( color: textColor ?? AppColor.blueNormal, ), ), ], ), ); } //endregion }