From b935f3f12ae205536d9643ab126cdc30571d8b06 Mon Sep 17 00:00:00 2001 From: "mr.mojtaba" Date: Tue, 27 May 2025 14:31:50 +0330 Subject: [PATCH] feat : content list --- assets/icons/virtual_tag.svg | 1 + assets/vec/place_holder.svg.vec | Bin 0 -> 5160 bytes assets/vec/virtual_tag.svg.vec | Bin 0 -> 1725 bytes lib/presentation/common/assets.dart | 36 +-- .../lib/presentation/common/assets.gen.dart | 12 + .../lib/presentation/page/tagging/view.dart | 281 +++++++++++++----- 6 files changed, 223 insertions(+), 107 deletions(-) create mode 100644 assets/icons/virtual_tag.svg create mode 100644 assets/vec/place_holder.svg.vec create mode 100644 assets/vec/virtual_tag.svg.vec diff --git a/assets/icons/virtual_tag.svg b/assets/icons/virtual_tag.svg new file mode 100644 index 0000000..1f8b8aa --- /dev/null +++ b/assets/icons/virtual_tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/vec/place_holder.svg.vec b/assets/vec/place_holder.svg.vec new file mode 100644 index 0000000000000000000000000000000000000000..caeb6bf3555827d9e81281726165faf16f3603fd GIT binary patch literal 5160 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 KQ6Uiy4gCukGL5eQ literal 0 HcmV?d00001 diff --git a/assets/vec/virtual_tag.svg.vec b/assets/vec/virtual_tag.svg.vec new file mode 100644 index 0000000000000000000000000000000000000000..3d6d199286f982295e9d2982b8ee96f77fe7fc5e GIT binary patch literal 1725 zcmZuydr(wW96tA6Koka%M*+Jm4v$d`2{HpqLhh%ypo2)_Ac!`gf;A{Gm5ov=C|WZO zWQYPQAgnBcYapOF7Q2*2H5y^WqflOEqoQGplv3Qzy}Q@?qjTrX_dCDyxWDiFokz;T z!-VlCge(`UQW!WXaD)hg(mQImz%il~P(LPctZ41+Y!Nt4wA@3I1kOsdhJLv%aMsjP zFod|!MF`6>EW^-h`B;{V5&g7GfRKH(PT;jW0$*=!q_#1_>@!B($PM(*-3wCr6S6)(fJM$fVpeYf)@|s* zVDvGhUHS$b(I9PGJ6%_U);5iVC6@}#ZTjEg&rX^DZ)}t>>{}Cp_8f$M*o2-(dB}cf zLhX)R6g)PeD<&7APfYkDFc;kvJ!a=3b;<Q`fAw>hV`0q>40lj>k*LUj?_7gC~leu zwRJNF3tplenz8aU;3_mBFd-JsO^ujLPlSE09%U69k$L){vafjz!8_}TYabR5^>j)xPjmujJ#c7TI_4YrQhA^L(2x|?>u(mKfTD;O&>Q)DF5 z3y|oMnP+SX?bPV{#DLeIc%rbP zjruug-fBc)K0)EFPho#=l0QT-xPF{JME&dEyvyfXHQ_u(yN_BR$EhIJ|I5Ri4=wft z2Z3j`uyb7ibz2oyAM-;YhRw>-L4BW2**7^sk`7sSHY|aOBjMV29^&+!!grqlb}jJz9pGuc8pM z@&xXzjl$!r75Mo63akz}3FQfT#<*%EEnJHCglY^)`$kLe0UPsP74yM)NXbwL;$0Vt zjO{uJ6+#`7o(qSF;&~JCRClbUKY_Nz@d^04s9ZvYP%8C{XdYiG%{TXlTE const SvgGenImage('assets/icons/user_square.svg'); + /// File path: assets/icons/virtual_tag.svg + SvgGenImage get virtualTag => const SvgGenImage('assets/icons/virtual_tag.svg'); + /// List of all assets List get values => [ add, @@ -161,6 +164,7 @@ class $AssetsIconsGen { trash, user, userSquare, + virtualTag, ]; } @@ -252,6 +256,9 @@ class $AssetsVecGen { /// File path: assets/vec/picture_frame.svg.vec SvgGenImage get pictureFrameSvg => const SvgGenImage.vec('assets/vec/picture_frame.svg.vec'); + /// File path: assets/vec/place_holder.svg.vec + SvgGenImage get placeHolderSvg => const SvgGenImage.vec('assets/vec/place_holder.svg.vec'); + /// File path: assets/vec/profile_circle.svg.vec SvgGenImage get profileCircleSvg => const SvgGenImage.vec('assets/vec/profile_circle.svg.vec'); @@ -288,6 +295,9 @@ class $AssetsVecGen { /// File path: assets/vec/user_square.svg.vec SvgGenImage get userSquareSvg => const SvgGenImage.vec('assets/vec/user_square.svg.vec'); + /// File path: assets/vec/virtual_tag.svg.vec + SvgGenImage get virtualTagSvg => const SvgGenImage.vec('assets/vec/virtual_tag.svg.vec'); + /// List of all assets List get values => [ addSvg, @@ -313,6 +323,7 @@ class $AssetsVecGen { messageAddSvg, pdfDownloadSvg, pictureFrameSvg, + placeHolderSvg, profileCircleSvg, profileUserSvg, receiptDiscountSvg, @@ -325,6 +336,7 @@ class $AssetsVecGen { trashSvg, userSvg, userSquareSvg, + virtualTagSvg, ]; } diff --git a/packages/livestock/lib/presentation/page/tagging/view.dart b/packages/livestock/lib/presentation/page/tagging/view.dart index 235d4c0..8623a91 100644 --- a/packages/livestock/lib/presentation/page/tagging/view.dart +++ b/packages/livestock/lib/presentation/page/tagging/view.dart @@ -37,10 +37,7 @@ class TaggingPage extends GetView { SizedBox(width: 4), IconButton( onPressed: () { - Get.bottomSheet( - _buildBottomSheet(), - isScrollControlled: true, - ); + Get.bottomSheet(_buildBottomSheet(), isScrollControlled: true); }, style: IconButton.styleFrom( backgroundColor: AppColor.blueNormal, @@ -53,78 +50,139 @@ class TaggingPage extends GetView { ), Expanded( - child: Card( - clipBehavior: Clip.hardEdge, - color: Colors.white, - child: GridView.builder( - padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10), - itemCount: 20, - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, - crossAxisSpacing: 12, - mainAxisSpacing: 8, - ), - itemBuilder: (context, index) { - return Container( - decoration: ShapeDecoration( - color: AppColor.lightGreyLightHover, - shape: RoundedRectangleBorder( - side: BorderSide(width: 1, color: AppColor.blackLightHover), - borderRadius: BorderRadius.circular(8), - ), - ), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + child: ListView.separated( + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), + itemCount: 20, + itemBuilder: (context, index) { + return Container( + width: Get.width, + height: 85, + decoration: BoxDecoration( + color: + index < 5 + ? AppColor.yellowNormal + : index < 12 + ? AppColor.greenLightActive + : AppColor.blueLight, + borderRadius: BorderRadius.circular(8), + ), + child: Row( + children: [ + SizedBox(width: 5), + Expanded( + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topRight: Radius.circular(8), + bottomRight: Radius.circular(8), + ), + border: Border.all( + color: + index < 5 + ? AppColor.yellowNormal + : index < 12 + ? AppColor.greenLightActive + : AppColor.blueLight, + width: 2, + ), + ), + child: Column( children: [ - Assets.vec.editSvg.svg( - width: 16, - height: 16, - colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), - ), - Assets.vec.trashSvg.svg( - width: 16, - height: 16, - colorFilter: ColorFilter.mode(AppColor.error, BlendMode.srcIn), - ), + SizedBox(height: 10), + Expanded(child: Row( + children: [ + SizedBox(width: 10,), + Container( + padding: EdgeInsets.all(8), + alignment: AlignmentDirectional.center, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.black54,), + child: Text((index+1).toString(),style: AppFonts.yekan18.copyWith(color: Colors.white),), + ), + + Expanded( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Container( + padding: EdgeInsets.all(8), + alignment: AlignmentDirectional.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: Colors.black26,), + child: Text('ماده',style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDark),), + ), + Container( + padding: EdgeInsets.all(8), + alignment: AlignmentDirectional.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: Colors.black26,), + child: Text('18 ماه',style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDark),), + ), + Container( + padding: EdgeInsets.all(8), + alignment: AlignmentDirectional.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: Colors.black26,), + child: Text('سرابی',style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDark),), + ), + ], + ), + ), + ], + )), + SizedBox(height: 10), + Expanded(child: + Row( + children: [ + SizedBox(width: 10,), + Text('پلاک : 1212115112512', style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDark)), + Spacer(), + Assets.vec.editSvg.svg( + width: 24, + height: 24, + colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), + ), + SizedBox(width: 10), + Assets.vec.trashSvg.svg( + width: 24, + height: 24, + colorFilter: ColorFilter.mode(AppColor.error, BlendMode.srcIn)), + SizedBox(width: 10,), + ], + + )), + ], ), - Text( - 'گوسفند ماده', - textAlign: TextAlign.center, - style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), - ), - SizedBox(height: 10), - Text( - 'سن : 18 ماه', - textAlign: TextAlign.center, - style: AppFonts.yekan12.copyWith(color: AppColor.darkGreyNormal), - ), - Text( - 'نوع نژاد', - textAlign: TextAlign.center, - style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), - ), - Text( - '1212115112512', - textAlign: TextAlign.center, - style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), - ), - Text( - 'نوع پلاک', - textAlign: TextAlign.center, - style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), - ), - ], + ), ), - ), - ); - }, - ), + + Container( + width: 20, + child: Center( + child: RotatedBox( + quarterTurns: 3, + child: Text( + index < 5 + ? 'گاو' + : index < 12 + ? 'گوسفند' + : 'مرغ', + style: AppFonts.yekan8, + textAlign: TextAlign.center, + ), + ), + ), + ), + ], + ), + ); + }, separatorBuilder: (BuildContext context, int index) =>SizedBox(height: 4,) ), ), @@ -144,6 +202,85 @@ class TaggingPage extends GetView { ); } + Widget _buildOldPage() { + return Expanded( + child: Card( + clipBehavior: Clip.hardEdge, + color: Colors.white, + child: GridView.builder( + padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10), + itemCount: 20, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 12, + mainAxisSpacing: 8, + ), + itemBuilder: (context, index) { + return Container( + decoration: ShapeDecoration( + color: AppColor.lightGreyLightHover, + shape: RoundedRectangleBorder( + side: BorderSide(width: 1, color: AppColor.blackLightHover), + borderRadius: BorderRadius.circular(8), + ), + ), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Assets.vec.editSvg.svg( + width: 16, + height: 16, + colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), + ), + Assets.vec.trashSvg.svg( + width: 16, + height: 16, + colorFilter: ColorFilter.mode(AppColor.error, BlendMode.srcIn), + ), + ], + ), + Text( + 'گوسفند ماده', + textAlign: TextAlign.center, + style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), + ), + SizedBox(height: 10), + Text( + 'سن : 18 ماه', + textAlign: TextAlign.center, + style: AppFonts.yekan12.copyWith(color: AppColor.darkGreyNormal), + ), + Text( + 'نوع نژاد', + textAlign: TextAlign.center, + style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), + ), + Text( + '1212115112512', + textAlign: TextAlign.center, + style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), + ), + Text( + 'نوع پلاک', + textAlign: TextAlign.center, + style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), + ), + ], + ), + ), + ); + }, + ), + ), + ); + + } + Widget _buildBottomSheet() { return BaseBottomSheet( child: Column(