feat: sale out of the province

This commit is contained in:
2025-06-17 11:46:09 +03:30
parent 4c40bfa43e
commit f5088027ba
5 changed files with 286 additions and 101 deletions

View File

@@ -1,8 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/chicken.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_chicken/data/models/response/kill_house_distribution_info/kill_house_distribution_info.dart';
import 'package:rasadyar_chicken/presentation/pages/buys_out_of_province/view.dart';
import 'package:rasadyar_chicken/presentation/pages/sales_out_of_province/view.dart';
import 'package:rasadyar_core/core.dart'; import 'package:rasadyar_core/core.dart';
class RootPage extends GetView<RootLogic> { class RootPage extends GetView<RootLogic> {
@@ -17,35 +15,37 @@ class RootPage extends GetView<RootLogic> {
children: [ children: [
Navigator( Navigator(
key: controller.navigatorKeys[0], key: controller.navigatorKeys[0],
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[0]), onGenerateRoute: (settings) =>
GetPageRoute(page: () => controller.pages[0]),
), ),
Navigator( Navigator(
key: Get.nestedKey(1), key: Get.nestedKey(1),
onGenerateRoute: (settings) { onGenerateRoute: (settings) {
Widget page; final page = ChickenPages.pages.firstWhere(
if (settings.name == ChickenRoutes.outOfProvince) { (e) => e.name == settings.name,
page = controller.pages[1]; orElse: () => ChickenPages.pages.firstWhere(
} else if (settings.name == ChickenRoutes.salesOutOfProvince) { (e) => e.name == ChickenRoutes.outOfProvince,
page = SalesOutOfProvincePage(); ),
} else if (settings.name == ChickenRoutes.buysOutOfProvince) { );
page = BuysOutOfProvincePage();
} else { return buildRouteFromGetPage(page);
page = controller.pages[1];
}
return GetPageRoute(page: () => page);
}, },
), ),
Navigator( Navigator(
key: controller.navigatorKeys[2], key: controller.navigatorKeys[2],
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[2]), onGenerateRoute: (settings) =>
GetPageRoute(page: () => controller.pages[2]),
), ),
Navigator( Navigator(
key: controller.navigatorKeys[3], key: controller.navigatorKeys[3],
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[3]), onGenerateRoute: (settings) =>
GetPageRoute(page: () => controller.pages[3]),
), ),
Navigator( Navigator(
key: controller.navigatorKeys[4], key: controller.navigatorKeys[4],
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[4]), onGenerateRoute: (settings) =>
GetPageRoute(page: () => controller.pages[4]),
), ),
], ],
index: data.value, index: data.value,
@@ -106,7 +106,10 @@ class RootPage extends GetView<RootLogic> {
return Container( return Container(
height: 70, height: 70,
width: Get.width / 2, width: Get.width / 2,
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
),
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
child: Row( child: Row(
children: [ children: [
@@ -127,7 +130,9 @@ class RootPage extends GetView<RootLogic> {
Text( Text(
'بارهای امروز', 'بارهای امروز',
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
), ),
], ],
), ),
@@ -177,19 +182,26 @@ class RootPage extends GetView<RootLogic> {
height: 82, height: 82,
decoration: BoxDecoration( decoration: BoxDecoration(
color: bgLabelColor, color: bgLabelColor,
borderRadius: BorderRadius.only(topRight: Radius.circular(8), bottomRight: Radius.circular(8)), borderRadius: BorderRadius.only(
topRight: Radius.circular(8),
bottomRight: Radius.circular(8),
),
), ),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
spacing: 4, spacing: 4,
children: [ children: [
SvgGenImage.vec( SvgGenImage.vec(iconPath).svg(
iconPath, width: 24,
).svg(width: 24, height: 24, colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn)), height: 24,
colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn),
),
Text( Text(
title, title,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan14.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
], ],
), ),
@@ -200,7 +212,10 @@ class RootPage extends GetView<RootLogic> {
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: bgDescriptionColor, color: bgDescriptionColor,
borderRadius: BorderRadius.only(topLeft: Radius.circular(8), bottomLeft: Radius.circular(8)), borderRadius: BorderRadius.only(
topLeft: Radius.circular(8),
bottomLeft: Radius.circular(8),
),
), ),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@@ -209,12 +224,16 @@ class RootPage extends GetView<RootLogic> {
Text( Text(
description, description,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan16.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
Text( Text(
unit, unit,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan12.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
], ],
), ),
@@ -259,17 +278,23 @@ class RootPage extends GetView<RootLogic> {
Text( Text(
title, title,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan14.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
Text( Text(
description, description,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan16.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
Text( Text(
unit, unit,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive), style: AppFonts.yekan12.copyWith(
color: AppColor.mediumGreyDarkActive,
),
), ),
], ],
), ),
@@ -288,9 +313,11 @@ class RootPage extends GetView<RootLogic> {
), ),
), ),
child: Center( child: Center(
child: SvgGenImage.vec( child: SvgGenImage.vec(iconPath).svg(
iconPath, width: 24,
).svg(width: 24, height: 24, colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn)), height: 24,
colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn),
),
), ),
), ),
), ),
@@ -299,7 +326,11 @@ class RootPage extends GetView<RootLogic> {
); );
} }
Widget widelyUsed({required String title, required String iconPath, required VoidCallback onTap}) { Widget widelyUsed({
required String title,
required String iconPath,
required VoidCallback onTap,
}) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@@ -311,14 +342,18 @@ class RootPage extends GetView<RootLogic> {
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: const Color(0xFFBECDFF), color: const Color(0xFFBECDFF),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
), ),
child: Container( child: Container(
width: 40, width: 40,
height: 40, height: 40,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: AppColor.blueNormal, color: AppColor.blueNormal,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
), ),
child: SvgGenImage.vec(iconPath).svg( child: SvgGenImage.vec(iconPath).svg(
width: 24, width: 24,
@@ -328,7 +363,10 @@ class RootPage extends GetView<RootLogic> {
), ),
), ),
), ),
Text(title, style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal)), Text(
title,
style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal),
),
], ],
); );
} }
@@ -345,16 +383,24 @@ class RootPage extends GetView<RootLogic> {
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: const Color(0xFFD9F7F0), color: const Color(0xFFD9F7F0),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
), ),
child: Assets.vec.messageAddSvg.svg( child: Assets.vec.messageAddSvg.svg(
width: 40, width: 40,
height: 40, height: 40,
colorFilter: ColorFilter.mode(AppColor.greenNormal, BlendMode.srcIn), colorFilter: ColorFilter.mode(
AppColor.greenNormal,
BlendMode.srcIn,
),
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
Text('افزودن', style: AppFonts.yekan10.copyWith(color: AppColor.greenDarkHover)), Text(
'افزودن',
style: AppFonts.yekan10.copyWith(color: AppColor.greenDarkHover),
),
], ],
); );
} }
@@ -501,7 +547,9 @@ class RootPage extends GetView<RootLogic> {
child: Text( child: Text(
title, title,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
), ),
), ),
Flexible( Flexible(
@@ -509,7 +557,9 @@ class RootPage extends GetView<RootLogic> {
child: Text( child: Text(
value, value,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
), ),
), ),
], ],
@@ -535,18 +585,30 @@ class RootPage extends GetView<RootLogic> {
Text( Text(
'اطلاعات ارسالی', 'اطلاعات ارسالی',
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal), style: AppFonts.yekan16Bold.copyWith(
color: AppColor.blueNormal,
),
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
buildRow('فروش و توزیع داخل استان (کیلوگرم)', model.stewardAllocationsWeight!.toInt().toString()), buildRow(
buildRow('فروش و توزیع خارج استان (کیلوگرم)', model.freeSalesWeight!.toInt().toString()), 'فروش و توزیع داخل استان (کیلوگرم)',
model.stewardAllocationsWeight!.toInt().toString(),
),
buildRow(
'فروش و توزیع خارج استان (کیلوگرم)',
model.freeSalesWeight!.toInt().toString(),
),
], ],
) )
: const Center(child: CircularProgressIndicator()), : const Center(child: CircularProgressIndicator()),
); );
} }
Widget cardWidget({required String title, required String iconPath, required VoidCallback onTap}) { Widget cardWidget({
required String title,
required String iconPath,
required VoidCallback onTap,
}) {
return Container( return Container(
width: Get.width / 4, width: Get.width / 4,
height: 130, height: 130,

View File

@@ -11,8 +11,6 @@ class SalesOutOfProvincePage extends GetView<SalesOutOfProvinceLogic> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: RAppBar( appBar: RAppBar(
title: 'رصدطیور',
iconTitle: Assets.vec.chickenSvg.path,
titleTextStyle: AppFonts.yekan16Bold.copyWith(color: Colors.white), titleTextStyle: AppFonts.yekan16Bold.copyWith(color: Colors.white),
centerTitle: true, centerTitle: true,
hasBack: true, hasBack: true,
@@ -24,12 +22,18 @@ class SalesOutOfProvincePage extends GetView<SalesOutOfProvinceLogic> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
spacing: 6, spacing: 6,
children: [ children: [
Assets.vec.cubeSearchSvg.svg( Assets.vec.chickenSvg.svg(
width: 24, width: 24,
height: 24, height: 24,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), colorFilter: const ColorFilter.mode(
Colors.white,
BlendMode.srcIn,
),
),
Text(
'رصدطیور',
style: AppFonts.yekan16Bold.copyWith(color: Colors.white),
), ),
Text('خرید خارج استان', style: AppFonts.yekan16Bold.copyWith(color: Colors.white)),
], ],
), ),
additionalActions: [ additionalActions: [
@@ -47,123 +51,182 @@ class SalesOutOfProvincePage extends GetView<SalesOutOfProvinceLogic> {
SizedBox(width: 8), SizedBox(width: 8),
], ],
), ),
body: ListView.separated( body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
routePageWidget(),
saleListWidget(),
],
),
floatingActionButton: RFab.add(onPressed: () {}),
floatingActionButtonLocation: FloatingActionButtonLocation.startFloat,
);
}
ListView saleListWidget() {
return ListView.separated(
shrinkWrap: true,
padding: EdgeInsets.fromLTRB(8, 8, 18, 80), padding: EdgeInsets.fromLTRB(8, 8, 18, 80),
itemBuilder: (context, index) { itemBuilder: (context, index) {
return ObxValue( return ObxValue(
(data) => GestureDetector( (data) => saleListItem(data, index),
onTap: () { controller.isExpandedList,
if(data.contains(index)){ );
controller.isExpandedList.remove(index); },
}else{ separatorBuilder: (context, index) => SizedBox(height: 8),
controller.isExpandedList.add(index); itemCount: 5,
);
} }
GestureDetector saleListItem(RxList<int> data, int index) {
return GestureDetector(
onTap: () {
if (data.contains(index)) {
controller.isExpandedList.remove(index);
} else {
controller.isExpandedList.add(index);
}
}, },
child: AnimatedContainer( child: AnimatedContainer(
duration: Duration(milliseconds: 400), duration: Duration(milliseconds: 400),
alignment: Alignment.center, alignment: Alignment.center,
height: data.contains(index)? 210 : 56, height: data.contains(index) ? 210 : 56,
child: Stack( child: Stack(
clipBehavior: Clip.none, clipBehavior: Clip.none,
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
children: [ children: [
AnimatedContainer( AnimatedContainer(
width: Get.width - 30, width: Get.width - 30,
duration: Duration(milliseconds: 400), duration: Duration(milliseconds: 300),
height: data.contains(index) ? 210 : 56, height: data.contains(index) ? 210 : 56,
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.transparent, color: Colors.transparent,
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
border: Border.all(width: 0.5, color: AppColor.darkGreyNormal), border: Border.all(
width: 0.5,
color: AppColor.darkGreyNormal,
),
), ),
child: AnimatedCrossFade( child: AnimatedCrossFade(
alignment: Alignment.center, alignment: Alignment.center,
firstChild: Row( firstChild: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [ children: [
Text( Text(
'1403/5/5', '1403/5/5',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), style: AppFonts.yekan14.copyWith(
color: AppColor.bgDark,
),
), ),
Text( Text(
'افلاک', 'افلاک',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
), ),
Text( Text(
'kg 200 مرغ گرم ', 'kg 200 مرغ گرم ',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal), style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
), ),
Text( Text(
'لرستان-خرم آباد', 'لرستان-خرم آباد',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(color: AppColor.bgDark), style: AppFonts.yekan14.copyWith(
color: AppColor.bgDark,
),
), ),
Icon(CupertinoIcons.chevron_down,size: 12,) Icon(CupertinoIcons.chevron_down, size: 12),
], ],
), ),
secondChild: Container( secondChild: Container(
padding: EdgeInsets.fromLTRB(8, 12, 14, 12), padding: EdgeInsets.fromLTRB(8, 12, 14, 12),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)), decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
),
child: Column( child: Column(
spacing: 8, spacing: 8,
children: [ children: [
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [ children: [
Assets.vec.editSvg.svg( Assets.vec.editSvg.svg(
width: 20, width: 20,
height: 20, height: 20,
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), colorFilter: ColorFilter.mode(
AppColor.blueNormal,
BlendMode.srcIn,
),
), ),
Text( Text(
'لرستان - خرم آباد', 'لرستان - خرم آباد',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppFonts.yekan16.copyWith(color: AppColor.greenDark), style: AppFonts.yekan16.copyWith(
color: AppColor.greenDark,
),
), ),
Assets.vec.trashSvg.svg( Assets.vec.trashSvg.svg(
width: 20, width: 20,
height: 20, height: 20,
colorFilter: ColorFilter.mode(AppColor.error, BlendMode.srcIn), colorFilter: ColorFilter.mode(
AppColor.error,
BlendMode.srcIn,
),
), ),
], ],
), ),
Container( Container(
height: 32, height: 32,
padding: EdgeInsets.symmetric(horizontal: 4), padding: EdgeInsets.symmetric(
horizontal: 4,
),
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: AppColor.blueLight, color: AppColor.blueLight,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: AppColor.blueLightHover), side: BorderSide(
width: 1,
color: AppColor.blueLightHover,
),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
), ),
child: buildRow('تاریخ', '07:15:00 - 1402/07/01'), child: buildRow(
'تاریخ',
'07:15:00 - 1402/07/01',
),
), ),
buildRow('مشخصات فروشنده', 'افلاک - 09203659874'), buildRow(
'مشخصات فروشنده',
'افلاک - 09203659874',
),
buildRow('وزن خریداری شده', '200 کیلوگرم'), buildRow('وزن خریداری شده', '200 کیلوگرم'),
buildRow('لاشه خریداری شده', '200 عدد'), buildRow('لاشه خریداری شده', '200 عدد'),
Row( Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
Icon(CupertinoIcons.chevron_up,size: 12,) Icon(CupertinoIcons.chevron_up, size: 12),
], ],
) ),
], ],
), ),
), ),
crossFadeState: data.contains(index)?CrossFadeState.showSecond:CrossFadeState.showFirst, crossFadeState: data.contains(index)
duration: Duration(milliseconds: 200), ? CrossFadeState.showSecond
: CrossFadeState.showFirst,
duration: Duration(milliseconds: 300),
), ),
), ),
Positioned( Positioned(
@@ -175,24 +238,57 @@ class SalesOutOfProvincePage extends GetView<SalesOutOfProvinceLogic> {
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColor.greenLightHover, color: AppColor.greenLightHover,
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
border: Border.all(width: 0.50, color: AppColor.greenDarkActive), border: Border.all(
width: 0.50,
color: AppColor.greenDarkActive,
),
), ),
alignment: Alignment.center, alignment: Alignment.center,
child: Text((index + 1).toString(), style: AppFonts.yekan12.copyWith(color: Colors.black)), child: Text(
(index + 1).toString(),
style: AppFonts.yekan12.copyWith(
color: Colors.black,
),
),
), ),
), ),
], ],
), ),
), ),
),
controller.isExpandedList,
); );
}, }
separatorBuilder: (context, index) => SizedBox(height: 8),
itemCount: 5, Row routePageWidget() {
return Row(
children: [
SizedBox(width: 8),
RichText(
text: TextSpan(
style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
children: [
WidgetSpan(
child: Row(
children: [
Assets.vec.cubeSearchSvg.svg(
width: 24,
height: 24,
colorFilter: const ColorFilter.mode(
AppColor.blueNormal,
BlendMode.srcIn,
), ),
floatingActionButton: RFab.add(onPressed: () {}), ),
floatingActionButtonLocation: FloatingActionButtonLocation.startFloat, SizedBox(width: 6,)
],
),
),
TextSpan(text: 'خارج استان'),
TextSpan(text: '/'),
TextSpan(text: 'خرید'),
],
),
),
],
); );
} }
@@ -207,7 +303,9 @@ class SalesOutOfProvincePage extends GetView<SalesOutOfProvinceLogic> {
child: Text( child: Text(
title, title,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
), ),
), ),
Flexible( Flexible(
@@ -215,13 +313,13 @@ class SalesOutOfProvincePage extends GetView<SalesOutOfProvinceLogic> {
child: Text( child: Text(
value, value,
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover), style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
), ),
), ),
], ],
), ),
); );
} }
} }

View File

@@ -45,3 +45,4 @@ export 'utils/safe_call_utils.dart';
export 'utils/date_time_utils.dart'; export 'utils/date_time_utils.dart';
export 'utils/num_utils.dart'; export 'utils/num_utils.dart';
export 'utils/map_utils.dart'; export 'utils/map_utils.dart';
export 'utils/route_utils.dart';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:rasadyar_core/core.dart'; import 'package:rasadyar_core/core.dart';
class RAppBar extends StatelessWidget implements PreferredSizeWidget { class RAppBar extends StatelessWidget implements PreferredSizeWidget {
final String title; final String? title;
final String? iconTitle; final String? iconTitle;
final Color backgroundColor; final Color backgroundColor;
final Color iconColor; final Color iconColor;
@@ -18,7 +18,7 @@ class RAppBar extends StatelessWidget implements PreferredSizeWidget {
const RAppBar({ const RAppBar({
super.key, super.key,
required this.title, this.title,
this.iconTitle, this.iconTitle,
this.backgroundColor = AppColor.blueNormal, this.backgroundColor = AppColor.blueNormal,
this.iconColor = Colors.white, this.iconColor = Colors.white,
@@ -43,15 +43,15 @@ class RAppBar extends StatelessWidget implements PreferredSizeWidget {
centerTitle: centerTitle, centerTitle: centerTitle,
titleTextStyle: titleTextStyle ?? AppFonts.yekan16.copyWith(color: Colors.white), titleTextStyle: titleTextStyle ?? AppFonts.yekan16.copyWith(color: Colors.white),
title: Row( title:title != null ? Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text(title), Text(title!),
if (iconTitle != null) ...{const SizedBox(width: 8)}, if (iconTitle != null) ...{const SizedBox(width: 8)},
if (iconTitle != null) ...{SvgGenImage.vec(iconTitle!).svg(width: 24, height: 24)}, if (iconTitle != null) ...{SvgGenImage.vec(iconTitle!).svg(width: 24, height: 24)},
], ],
), ): null,
leadingWidth: leadingWidth?.toDouble(), leadingWidth: leadingWidth?.toDouble(),
leading: leading != null ? Padding(padding: const EdgeInsets.only(right: 6), child: leading) : null, leading: leading != null ? Padding(padding: const EdgeInsets.only(right: 6), child: leading) : null,
titleSpacing: 8, titleSpacing: 8,

View File

@@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
GetPageRoute<dynamic> buildRouteFromGetPage(GetPage page) {
return GetPageRoute(
page: page.page,
settings: RouteSettings(name: page.name),
transition: page.transition,
curve: page.curve,
binding: page.binding,
bindings: page.bindings,
routeName: page.name,
title: page.title,
gestureWidth: page.gestureWidth,
alignment: page.alignment,
maintainState: page.maintainState,
customTransition: page.customTransition,
transitionDuration: page.transitionDuration ?? const Duration(milliseconds: 300),
fullscreenDialog: page.fullscreenDialog,
opaque: page.opaque,
popGesture: page.popGesture,
showCupertinoParallax: page.showCupertinoParallax,
);
}