2025-07-16 11:48:00 +03:30
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
|
|
|
|
|
|
import 'package:rasadyar_core/core.dart';
|
|
|
|
|
|
|
|
|
|
|
|
import 'logic.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class WidelyUsedWidget extends StatelessWidget {
|
|
|
|
|
|
const WidelyUsedWidget({super.key});
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
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),
|
2025-07-16 18:31:47 +03:30
|
|
|
|
/* ObxValue((data) {
|
2025-07-16 11:48:00 +03:30
|
|
|
|
return GestureDetector(
|
|
|
|
|
|
onTap: () {
|
|
|
|
|
|
controller.toggleType();
|
|
|
|
|
|
},
|
|
|
|
|
|
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),
|
|
|
|
|
|
),
|
|
|
|
|
|
);
|
2025-07-16 18:31:47 +03:30
|
|
|
|
}, controller.type)*/
|
2025-07-16 11:48:00 +03:30
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
|
Padding(
|
|
|
|
|
|
padding: const EdgeInsets.symmetric(horizontal: 2.0, vertical: 2),
|
2025-07-16 18:31:47 +03:30
|
|
|
|
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.buysOutOfProvince, id: 0);
|
|
|
|
|
|
},
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
|
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.buysInProvince, 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.salesOutOfProvince, 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.salesInProvince, id: 1);
|
|
|
|
|
|
},
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
2025-07-16 11:48:00 +03:30
|
|
|
|
),
|
|
|
|
|
|
],
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Widget widelyUsed({
|
|
|
|
|
|
required String title,
|
|
|
|
|
|
required String iconPath,
|
|
|
|
|
|
required VoidCallback onTap,
|
|
|
|
|
|
required bool isOnEdit,
|
2025-07-16 18:31:47 +03:30
|
|
|
|
Color? cardColor,
|
|
|
|
|
|
Color? labelColor,
|
|
|
|
|
|
Color? textColor,
|
2025-07-16 11:48:00 +03:30
|
|
|
|
}) {
|
|
|
|
|
|
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(
|
2025-07-16 18:31:47 +03:30
|
|
|
|
color: cardColor ?? Color(0xFFBECDFF),
|
2025-07-16 11:48:00 +03:30
|
|
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
|
|
|
|
|
|
),
|
|
|
|
|
|
child: Container(
|
|
|
|
|
|
width: 40,
|
|
|
|
|
|
height: 40,
|
|
|
|
|
|
decoration: ShapeDecoration(
|
2025-07-16 18:31:47 +03:30
|
|
|
|
color: labelColor ?? AppColor.blueNormal,
|
2025-07-16 11:48:00 +03:30
|
|
|
|
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),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
|
|
|
|
|
),
|
2025-07-16 18:31:47 +03:30
|
|
|
|
Text(title, style: AppFonts.yekan10.copyWith(color: textColor ?? AppColor.blueNormal)),
|
2025-07-16 11:48:00 +03:30
|
|
|
|
],
|
|
|
|
|
|
),
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Widget addWidelyUsed({required VoidCallback onTap}) {
|
|
|
|
|
|
return Column(
|
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
|
spacing: 4,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
Container(
|
|
|
|
|
|
width: 48,
|
|
|
|
|
|
height: 48,
|
|
|
|
|
|
padding: EdgeInsets.all(4),
|
|
|
|
|
|
decoration: ShapeDecoration(
|
|
|
|
|
|
color: const Color(0xFFD9F7F0),
|
|
|
|
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
|
|
|
|
|
|
),
|
|
|
|
|
|
child: Assets.vec.messageAddSvg.svg(
|
|
|
|
|
|
width: 40,
|
|
|
|
|
|
height: 40,
|
|
|
|
|
|
colorFilter: ColorFilter.mode(AppColor.greenNormal, BlendMode.srcIn),
|
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
Text('افزودن', style: AppFonts.yekan10.copyWith(color: AppColor.greenDarkHover)),
|
|
|
|
|
|
],
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|