fix: ui changes steward

This commit is contained in:
2025-09-29 09:46:36 +03:30
parent b0212721b5
commit 2f934183e4
10 changed files with 319 additions and 335 deletions

View File

@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/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_chicken/presentation/widget/sale_buy_card_item.dart';
import 'package:rasadyar_core/core.dart';
import 'logic.dart';
@@ -18,28 +17,33 @@ class BuyPage extends GetView<BuyLogic> {
widgets: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 21.w,
children: [
Wrap(
alignment: WrapAlignment.center,
spacing: 14.w,
children: [
saleOrBuyItemCard(
title: 'خرید داخل استان',
iconPath: Assets.vec.cubeSvg.path,
color: AppColor.greenNormalActive,
onTap: () {
Get.toNamed(ChickenRoutes.buysInProvinceSteward, id: stewardFirstKey);
},
),
saleOrBuyItemCard(
title: 'خرید خارج استان',
iconPath: Assets.vec.truckFastSvg.path,
color: AppColor.greenNormalActive,
onTap: () {
Get.toNamed(ChickenRoutes.buysOutOfProvinceSteward, id: stewardFirstKey);
},
),
],
GlassMorphismCardIcon(
title: 'خرید داخل استان',
vecIcon: Assets.vec.cubeSvg.path,
gradient: LinearGradient(
colors: [Color(0xFF00E096), Color(0xFF007D5E)],
stops: [0.0, 0.95],
begin: AlignmentGeometry.topLeft,
end: AlignmentGeometry.bottomRight,
),
onTap: () {
Get.toNamed(ChickenRoutes.buysInProvinceSteward, id: stewardFirstKey);
},
),
GlassMorphismCardIcon(
title: 'خرید خارج استان',
vecIcon: Assets.vec.truckFastSvg.path,
gradient: LinearGradient(
colors: [Color(0xFF00E096), Color(0xFF007D5E)],
stops: [0.0, 0.95],
begin: AlignmentGeometry.topLeft,
end: AlignmentGeometry.bottomRight,
),
onTap: () {
Get.toNamed(ChickenRoutes.buysOutOfProvinceSteward, id: stewardFirstKey);
},
),
],
),

View File

@@ -17,140 +17,136 @@ class HomePage extends GetView<HomeLogic> {
scrollable: true,
isBase: true,
widgets: [
InkWell(
onTap: () {
controller.isExpanded.value = !controller.isExpanded.value;
},
child: Card(
margin: EdgeInsetsGeometry.all(6),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
side: BorderSide(width: 0.50, color: const Color(0xFFA9A9A9)),
),
child: ObxValue((data) {
return AnimatedSize(
duration: Duration(milliseconds: 300),
child: data.value
? Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
spacing: 8,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 40,
height: 40,
decoration: ShapeDecoration(
image: DecorationImage(
image: AssetImage(Assets.images.chicken.path),
fit: BoxFit.cover,
),
shape: RoundedRectangleBorder(
side: BorderSide(width: 0.25, color: const Color(0xFFB0B0B0)),
borderRadius: BorderRadius.circular(4),
),
),
),
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),
_todayShipmentWidget(),
_inventoryWidget(),
Row(
children: [
Text(
'اطلاعات بارها',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
],
),
_informationShipment(),
Row(
children: [
Text(
'اطلاعات توزیع',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
],
),
distributionInformationWidget(),
],
),
)
: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
spacing: 8,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 40,
height: 40,
decoration: ShapeDecoration(
image: DecorationImage(
image: AssetImage(Assets.images.chicken.path),
fit: BoxFit.cover,
),
shape: RoundedRectangleBorder(
side: BorderSide(width: 0.25, color: const Color(0xFFB0B0B0)),
borderRadius: BorderRadius.circular(4),
),
),
),
Text(
'مرغ گرم',
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(
color: AppColor.darkGreyDarkActive,
),
),
Spacer(),
Icon(CupertinoIcons.chevron_down, size: 18),
],
),
_todayShipmentWidget(),
_inventoryWidget(),
],
),
),
);
}, controller.isExpanded),
),
),
SizedBox(height: 8.h),
mainInformation(),
SizedBox(height: 8.h),
WidelyUsedWidget(),
SizedBox(height: 20),
],
);
}
InkWell mainInformation() {
return 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
? Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
spacing: 8,
mainAxisAlignment: MainAxisAlignment.end,
children: [
AnimatedRotation(
turns: 180,
duration: Duration(milliseconds: 3000),
child: Icon(CupertinoIcons.chevron_up, size: 18),
),
],
),
SizedBox(height: 8),
_todayShipmentWidget(),
_inventoryWidget(),
Row(
children: [
Text(
'اطلاعات بارها',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
],
),
_informationShipment(),
Row(
children: [
Text(
'اطلاعات توزیع',
textAlign: TextAlign.right,
style: AppFonts.yekan16,
),
],
),
distributionInformationWidget(),
],
),
)
: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
spacing: 8,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Icon(CupertinoIcons.chevron_down, size: 18),
],
),
_todayShipmentWidget(),
_inventoryWidget(),
],
),
),
);
}, 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: 24.w,
height: 24.h,
colorFilter: ColorFilter.mode(AppColor.blueDark, BlendMode.srcIn),
),
Text(
'اطلاعات مرغ گرم',
textAlign: TextAlign.right,
style: AppFonts.yekan16Bold.copyWith(color: AppColor.iconColor),
),
],
),
),
),
],
),
);
}
Widget distributionInformationWidget() {
return Padding(
padding: const EdgeInsets.fromLTRB(0, 8, 0, 13),

View File

@@ -19,26 +19,22 @@ class SalePage extends GetView<SaleLogic> {
widgets: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 21,
children: [
Wrap(
alignment: WrapAlignment.center,
spacing: 14.w,
children: [
saleOrBuyItemCard(
title: 'فروش داخل استان',
iconPath: Assets.vec.cubeSvg.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesInProvinceSteward, id: stewardSecondKey);
},
),
saleOrBuyItemCard(
title: 'فروش خارج استان',
iconPath: Assets.vec.truckFastSvg.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesOutOfProvinceSteward, id: stewardSecondKey);
},
),
],
GlassMorphismCardIcon(
title: 'فروش داخل استان',
vecIcon: Assets.vec.cubeSvg.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesInProvinceSteward, id: stewardSecondKey);
},
),
GlassMorphismCardIcon(
title: 'فروش خارج استان',
vecIcon: Assets.vec.truckFastSvg.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesOutOfProvinceSteward, id: stewardSecondKey);
},
),
],
),

View File

@@ -1,4 +1,4 @@
import 'package:rasadyar_chicken/chicken.dart';
import 'package:rasadyar_chicken/presentation/pages/steward/root/logic.dart';
import 'package:rasadyar_core/core.dart';

View File

@@ -12,100 +12,94 @@ class WidelyUsedWidget extends StatelessWidget {
Widget build(BuildContext context) {
final WidelyUsedLogic controller = Get.put(WidelyUsedLogic());
return Column(
children: [
Padding(
padding: EdgeInsetsGeometry.all(6),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('پر کاربرد ها', textAlign: TextAlign.right, style: AppFonts.yekan16),
/* ObxValue((data) {
return GestureDetector(
onTap: () {
controller.toggleType();
return Container(
height: 110.h,
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.truckFastSvg.path,
isOnEdit: false,
cardColor: AppColor.greenLightActive,
labelColor: AppColor.greenNormal,
textColor: AppColor.greenDarkHover,
onTap: () async {
controller.rootLogic.currentPage.value = 0;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.buysOutOfProvinceSteward, id: 0);
},
child: controller.isOnEdit()
? Assets.vec.checkSvg.svg(
width: 12.w,
height: 12.h,
colorFilter: ColorFilter.mode(AppColor.greenNormal, BlendMode.srcIn),
)
: Assets.vec.editSvg.svg(
width: 16.w,
height: 16.h,
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
),
);
}, controller.type)*/
],
),
widelyUsed(
title: 'خرید داخل استان',
iconPath: Assets.vec.cubeSvg.path,
cardColor: AppColor.greenLightActive,
labelColor: AppColor.greenNormal,
textColor: AppColor.greenDarkHover,
onTap: () async {
controller.rootLogic.currentPage.value = 0;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.buysInProvinceSteward, id: 0);
},
isOnEdit: false,
),
widelyUsed(
title: 'فروش خارج استان',
iconPath: Assets.vec.truckFastSvg.path,
isOnEdit: false,
onTap: () async {
controller.rootLogic.currentPage.value = 1;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.salesOutOfProvinceSteward, id: 1);
},
),
widelyUsed(
title: 'فروش داخل استان',
iconPath: Assets.vec.cubeSvg.path,
isOnEdit: false,
onTap: () async {
controller.rootLogic.currentPage.value = 1;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.salesInProvinceSteward, id: 1);
},
),
],
)
),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 2.0, vertical: 2),
child: Wrap(
spacing: 15,
runSpacing: 8,
children: [
widelyUsed(
title: 'خرید خارج استان',
iconPath: Assets.vec.truckFastSvg.path,
isOnEdit: false,
cardColor: AppColor.greenLightActive,
labelColor: AppColor.greenNormal,
textColor: AppColor.greenDarkHover,
onTap: () async {
controller.rootLogic.currentPage.value = 0;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.buysOutOfProvinceSteward, id: 0);
},
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)),
),
widelyUsed(
title: 'خرید داخل استان',
iconPath: Assets.vec.cubeSvg.path,
cardColor: AppColor.greenLightActive,
labelColor: AppColor.greenNormal,
textColor: AppColor.greenDarkHover,
onTap: () async {
controller.rootLogic.currentPage.value = 0;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.buysInProvinceSteward, id: 0);
},
isOnEdit: false,
),
widelyUsed(
title: 'فروش خارج استان',
iconPath: Assets.vec.truckFastSvg.path,
isOnEdit: false,
onTap: () async {
controller.rootLogic.currentPage.value = 1;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.salesOutOfProvinceSteward, id: 1);
},
),
widelyUsed(
title: 'فروش داخل استان',
iconPath: Assets.vec.cubeSvg.path,
isOnEdit: false,
onTap: () async {
controller.rootLogic.currentPage.value = 1;
controller.rootLogic.currentPage.refresh();
await Future.delayed(Duration(milliseconds: 100));
Get.toNamed(ChickenRoutes.salesInProvinceSteward, id: 1);
},
),
],
child: Text('پر کاربردها', textAlign: TextAlign.right, style: AppFonts.yekan16),
),
),
),
],
],
),
);
}

View File

@@ -113,6 +113,7 @@ class GlassMorphismCardIcon extends StatelessWidget {
this.iconWidth = 48,
this.iconHeight = 48,
this.iconColor,
this.gradient,
}) : assert((svgIcon != null) || (vecIcon != null), 'Either svgIcon or vecIcon must be provided');
final String title;
@@ -123,6 +124,7 @@ class GlassMorphismCardIcon extends StatelessWidget {
final VoidCallback? onTap;
final Color titleColor;
final TextStyle? titleStyle;
final Gradient? gradient;
final Color borderColor;
final Color backgroundColor;
@@ -149,7 +151,6 @@ class GlassMorphismCardIcon extends StatelessWidget {
onTap: onTap,
child: Stack(
children: [
Positioned.fill(
child: Container(
width: width.w,
@@ -159,14 +160,6 @@ class GlassMorphismCardIcon extends StatelessWidget {
color: Colors.white54,
border: Border.all(width: 1, color: Colors.white),
borderRadius: BorderRadius.circular(borderRadius),
boxShadow: [
BoxShadow(
color: Colors.black12,
blurRadius: 5,
offset: Offset(10, 12),
),
],
),
child: InkWell(
onTap: onTap,
@@ -180,7 +173,7 @@ class GlassMorphismCardIcon extends StatelessWidget {
title,
textAlign: TextAlign.center,
style:
titleStyle ??
titleStyle ??
AppFonts.yekan18Bold.copyWith(color: titleColor, height: 1.20),
),
),
@@ -201,11 +194,13 @@ class GlassMorphismCardIcon extends StatelessWidget {
topLeft: Radius.circular(borderRadius),
topRight: Radius.circular(borderRadius),
),
gradient: LinearGradient(
colors: [Color(0xff00b6bc), Color(0xff003ae0)],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
gradient:
gradient ??
LinearGradient(
colors: [Color(0xff00b6bc), Color(0xff003ae0)],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
child: Center(
child: svgIcon != null
@@ -224,10 +219,6 @@ class GlassMorphismCardIcon extends StatelessWidget {
),
),
),
],
),
),

View File

@@ -9,18 +9,21 @@ class EmptyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RefreshIndicator(
onRefresh: onRefresh?? () async {},
onRefresh: onRefresh ?? () async {},
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: SizedBox(
height: MediaQuery.of(context).size.height/1.5,
height: MediaQuery.of(context).size.height / 1.5,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Row(),
Assets.vec.emptySvg.svg(width: 170.w, height: 170.h),
Text('داده ای یافت نشد!', style: AppFonts.yekan20.copyWith(color: AppColor.textColor)),
Assets.vec.emptySvg.svg(height: 190.h),
Text(
'داده ای یافت نشد!',
style: AppFonts.yekan20.copyWith(color: AppColor.textColor),
),
],
),
),