diff --git a/assets/icons/bg_header_user_profile.svg b/assets/icons/bg_header_user_profile.svg
new file mode 100644
index 0000000..3fdb2f5
--- /dev/null
+++ b/assets/icons/bg_header_user_profile.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/excel_download.svg b/assets/icons/excel_download.svg
new file mode 100644
index 0000000..a1c7e4b
--- /dev/null
+++ b/assets/icons/excel_download.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/icons/information.svg b/assets/icons/information.svg
new file mode 100644
index 0000000..1ae3840
--- /dev/null
+++ b/assets/icons/information.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/pdf_download.svg b/assets/icons/pdf_download.svg
new file mode 100644
index 0000000..bb80401
--- /dev/null
+++ b/assets/icons/pdf_download.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/icons/picture_frame.svg b/assets/icons/picture_frame.svg
new file mode 100644
index 0000000..1aa2bc8
--- /dev/null
+++ b/assets/icons/picture_frame.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/receipt_discount.svg b/assets/icons/receipt_discount.svg
new file mode 100644
index 0000000..1f41ab6
--- /dev/null
+++ b/assets/icons/receipt_discount.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/tag_user.svg b/assets/icons/tag_user.svg
new file mode 100644
index 0000000..a7e464a
--- /dev/null
+++ b/assets/icons/tag_user.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/user.svg b/assets/icons/user.svg
new file mode 100644
index 0000000..af27d7c
--- /dev/null
+++ b/assets/icons/user.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/user_square.svg b/assets/icons/user_square.svg
new file mode 100644
index 0000000..c2de783
--- /dev/null
+++ b/assets/icons/user_square.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/vec/bg_header_user_profile.svg.vec b/assets/vec/bg_header_user_profile.svg.vec
new file mode 100644
index 0000000..c58f58c
Binary files /dev/null and b/assets/vec/bg_header_user_profile.svg.vec differ
diff --git a/assets/vec/excel_download.svg.vec b/assets/vec/excel_download.svg.vec
new file mode 100644
index 0000000..623671d
Binary files /dev/null and b/assets/vec/excel_download.svg.vec differ
diff --git a/assets/vec/information.svg.vec b/assets/vec/information.svg.vec
new file mode 100644
index 0000000..80fe416
Binary files /dev/null and b/assets/vec/information.svg.vec differ
diff --git a/assets/vec/pdf_download.svg.vec b/assets/vec/pdf_download.svg.vec
new file mode 100644
index 0000000..b74b222
Binary files /dev/null and b/assets/vec/pdf_download.svg.vec differ
diff --git a/assets/vec/picture_frame.svg.vec b/assets/vec/picture_frame.svg.vec
new file mode 100644
index 0000000..1a0551d
Binary files /dev/null and b/assets/vec/picture_frame.svg.vec differ
diff --git a/assets/vec/receipt_discount.svg.vec b/assets/vec/receipt_discount.svg.vec
new file mode 100644
index 0000000..851be37
Binary files /dev/null and b/assets/vec/receipt_discount.svg.vec differ
diff --git a/assets/vec/tag_user.svg.vec b/assets/vec/tag_user.svg.vec
new file mode 100644
index 0000000..e90f06b
Binary files /dev/null and b/assets/vec/tag_user.svg.vec differ
diff --git a/assets/vec/user.svg.vec b/assets/vec/user.svg.vec
new file mode 100644
index 0000000..9455e63
Binary files /dev/null and b/assets/vec/user.svg.vec differ
diff --git a/assets/vec/user_square.svg.vec b/assets/vec/user_square.svg.vec
new file mode 100644
index 0000000..85abcce
Binary files /dev/null and b/assets/vec/user_square.svg.vec differ
diff --git a/features/supervision/lib/presentation/action/logic.dart b/features/supervision/lib/presentation/action/logic.dart
index f9cdbce..34a4ec6 100644
--- a/features/supervision/lib/presentation/action/logic.dart
+++ b/features/supervision/lib/presentation/action/logic.dart
@@ -1,10 +1,12 @@
import 'package:rasadyar_core/core.dart';
+import 'package:rasadyar_core/data/utils.dart';
class ActionLogic extends GetxController with GetTickerProviderStateMixin {
late Rx slidController;
bool showSlideHint = true;
- RxBool isExpanded = false.obs;
+
RxInt selectedIndex = 0.obs;
+ RxInt previousIndex = 0.obs;
List headersTitle = [
'کاربران',
@@ -20,10 +22,31 @@ class ActionLogic extends GetxController with GetTickerProviderStateMixin {
Assets.vecLogoutSvg,
];
+ RxList supervisionHistoryList = [false, false, false, false].obs;
+
+ List tmpLs = ['دولتی', 'غیر دولتی', 'استیجاری', 'شخصی', 'سایر'];
+
+ List hamadanCities = [
+ 'همدان',
+ 'ملایر',
+ 'نهاوند',
+ 'تویسرکان',
+ 'اسدآباد',
+ 'بهار',
+ 'رزن',
+ 'کبودرآهنگ',
+ 'فامنین',
+ 'لالجین',
+ ];
+
+ RxInt filter1Index = 0.obs;
+ RxInt filter2Index = 0.obs;
+
@override
void onInit() {
super.onInit();
slidController = SlidableController(this).obs;
+
}
@override
@@ -38,7 +61,6 @@ class ActionLogic extends GetxController with GetTickerProviderStateMixin {
super.onClose();
}
-
Future triggerSlidableAnimation() async {
await Future.delayed(Duration(milliseconds: 200));
await slidController.value.openEndActionPane();
@@ -47,4 +69,12 @@ class ActionLogic extends GetxController with GetTickerProviderStateMixin {
showSlideHint = !showSlideHint;
}
+
+ void updateSelectedIndex(int index) {
+ if(index == selectedIndex.value) {
+ return;
+ }
+ previousIndex.value = selectedIndex.value;
+ selectedIndex.value = index;
+ }
}
diff --git a/features/supervision/lib/presentation/action/view.dart b/features/supervision/lib/presentation/action/view.dart
index 9f58b3f..37917a1 100644
--- a/features/supervision/lib/presentation/action/view.dart
+++ b/features/supervision/lib/presentation/action/view.dart
@@ -1,5 +1,9 @@
+import 'dart:io';
+
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:rasadyar_core/core.dart';
+import 'package:rasadyar_core/presentation/widget/buttons/elevated.dart';
import 'logic.dart';
@@ -22,7 +26,8 @@ class ActionPage extends GetView {
icon: controller.headersIcons[index],
title: controller.headersTitle[index],
onTap: () {
- controller.selectedIndex.value = index;
+ controller.updateSelectedIndex(index);
+
},
isSelected: controller.selectedIndex.value == index,
);
@@ -30,16 +35,63 @@ class ActionPage extends GetView {
);
}, controller.selectedIndex),
Expanded(
- child: ObxValue(
- (index) => switch (index.value) {
+ child: ObxValue((index) {
+ if (index.value == 3) {
+ WidgetsBinding.instance.addPostFrameCallback((_) {
+ showCupertinoDialog(
+ context: context,
+ barrierDismissible: true,
+ builder: (context) {
+ return CupertinoAlertDialog(
+ title: Text(
+ 'از سامانه خارج می شوید؟',
+ style: AppFonts.yekan18.copyWith(
+ color: AppColor.lightGreyDarkActive,
+ ),
+ ),
+ actions: [
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Row(
+ spacing: 16,
+ children: [
+ Expanded(
+ child: RElevated(
+ text: 'بله',
+ onPressed: () {
+ exit(0);
+ },
+ ),
+ ),
+ Expanded(
+ child: ROutlinedElevated(
+ text: 'خیر',
+ onPressed: () {
+
+ controller.updateSelectedIndex(controller.previousIndex.value);
+
+ Get.back();
+ },
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ );
+ },
+ );
+ });
+ }
+
+ return switch (index.value) {
0 => profileWidget(),
- 1 => slidableWidgetTwo(),
- 2 => slidableWidgetOne(),
- 3 => slidableWidgetOne(),
- int() => Placeholder(),
- },
- controller.selectedIndex,
- ),
+ 1 => supervisionHistoryWidget(),
+ 2 => statisticsWidget(),
+
+ int() => Container(),
+ };
+ }, controller.selectedIndex),
),
],
),
@@ -47,6 +99,112 @@ class ActionPage extends GetView {
);
}
+ Container statisticsWidget() => Container(
+ margin: EdgeInsets.only(top: 50),
+ padding: EdgeInsets.symmetric(horizontal: 35, vertical: 50),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(30),
+ topRight: Radius.circular(30),
+ ),
+ ),
+ child: Column(
+ children: [
+ Container(
+ height: 32,
+ margin: EdgeInsets.only(top: 10, left: 22, right: 22),
+
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ spacing: 10,
+ children: [
+ Expanded(
+ child: ROutlinedElevatedIcon(
+ icon: FaIcon(FontAwesomeIcons.calendar),
+ onPressed: () {},
+ text: 'از تاریخ',
+ textStyle: AppFonts.yekan16.copyWith(
+ color: AppColor.blueNormal,
+ ),
+ ),
+ ),
+ Expanded(
+ child: ROutlinedElevatedIcon(
+ icon: FaIcon(FontAwesomeIcons.calendar),
+ onPressed: () {},
+ text: 'تا تاریخ',
+ textStyle: AppFonts.yekan16.copyWith(
+ color: AppColor.blueNormal,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ optionWidget(
+ selected: controller.filter1Index,
+ title: 'فیلترتراکنش ها',
+ options: controller.tmpLs,
+ ),
+ optionWidget(
+ selected: controller.filter2Index,
+ title: 'فیلتر شهرستان',
+ options: controller.hamadanCities,
+ ),
+
+ SizedBox(height: 10),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.end,
+
+ children: [
+ vecWidgetWithOnTap(
+ assets: Assets.vecPdfDownloadSvg,
+ onTap: () {},
+ width: 64,
+ height: 64,
+ ),
+ vecWidgetWithOnTap(
+ assets: Assets.vecExcelDownloadSvg,
+ onTap: () {},
+ width: 64,
+ height: 64,
+ ),
+ ],
+ ),
+ SizedBox(height: 16),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ spacing: 25,
+ children: [
+ headerInfo(title: 'تعداد تراکنش ها', description: '183 '),
+ headerInfo(
+ title: 'جمع تراکنش ها',
+ description: '183 ریال',
+ background: AppColor.green1Light,
+ ),
+ ],
+ ),
+ ],
+ ),
+ );
+
+ Widget supervisionHistoryWidget() {
+ return ObxValue((data) {
+ return ListView.builder(
+ itemBuilder: (context, index) {
+ return historyItem(data[index], () {
+ data[index] = !data[index];
+ });
+ },
+ shrinkWrap: true,
+ physics: BouncingScrollPhysics(),
+ itemCount: data.length,
+ );
+ }, controller.supervisionHistoryList);
+ }
+
Column profileWidget() {
return Column(
children: [
@@ -195,138 +353,363 @@ class ActionPage extends GetView {
);
}
- Widget slidableWidgetTwo() {
- return ObxValue((data) {
- return Padding(
- padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 20),
- child: GestureDetector(
- onTap: (){
- controller.isExpanded.value = !controller.isExpanded.value;
- },
- child: AnimatedContainer(
- duration: Duration(milliseconds: 2000),
- height: data.value ? 370 : 62,
- child:
- data.value
- ? Container(color: Colors.yellow,height: 80,width: 180,)
- : Slidable(
- key: Key('selectedLocationWidget'),
- controller: controller.slidController.value,
- endActionPane: ActionPane(
- motion: StretchMotion(),
+ Widget slidableWidgetTwo({required VoidCallback onTap}) {
+ return Slidable(
+ key: Key('selectedLocationWidget'),
+ controller: controller.slidController.value,
+ endActionPane: ActionPane(
+ motion: StretchMotion(),
+ children: [
+ CustomSlidableAction(
+ onPressed: (context) {},
+ backgroundColor: AppColor.blueNormal,
+ foregroundColor: Colors.white,
+ padding: EdgeInsets.all(16),
+ borderRadius: BorderRadius.only(
+ topRight: Radius.circular(8),
+ bottomRight: Radius.circular(8),
+ ),
+ autoClose: true,
+ child: vecWidget(Assets.vecEditSvg, width: 24, height: 24),
+ ),
+ CustomSlidableAction(
+ onPressed: (context) {},
+ backgroundColor: AppColor.redNormal,
+ foregroundColor: Colors.white,
+ padding: EdgeInsets.all(16),
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(8),
+ bottomLeft: Radius.circular(8),
+ ),
+ autoClose: true,
+ child: vecWidget(Assets.vecTrashSvg, width: 24, height: 24),
+ ),
+ ],
+ ),
+ child: GestureDetector(
+ onTap: onTap,
+ child: Container(
+ height: 62,
+ padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(8),
+ border: Border.all(width: 1, color: AppColor.blackLightHover),
+ ),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Column(
+ spacing: 4,
children: [
- CustomSlidableAction(
- onPressed: (context) {},
- backgroundColor: AppColor.blueNormal,
- foregroundColor: Colors.white,
- padding: EdgeInsets.all(16),
- borderRadius: BorderRadius.only(
- topRight: Radius.circular(8),
- bottomRight: Radius.circular(8),
- ),
- autoClose: true,
- child: vecWidget(
- Assets.vecEditSvg,
- width: 24,
- height: 24,
+ Text(
+ 'داود خرم مهری پور',
+ style: AppFonts.yekan10.copyWith(
+ color: AppColor.blueNormal,
),
),
- CustomSlidableAction(
- onPressed: (context) {},
- backgroundColor: AppColor.redNormal,
- foregroundColor: Colors.white,
- padding: EdgeInsets.all(16),
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(8),
- bottomLeft: Radius.circular(8),
- ),
- autoClose: true,
- child: vecWidget(
- Assets.vecTrashSvg,
- width: 24,
- height: 24,
+ Text(
+ '03295224154',
+ style: AppFonts.yekan12.copyWith(
+ color: AppColor.darkGreyDarkHover,
),
),
],
),
- child: GestureDetector(
- onTap: () {},
- child: Container(
- height: 62,
- padding: EdgeInsets.symmetric(
- horizontal: 20,
- vertical: 15,
- ),
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.circular(8),
- border: Border.all(
- width: 1,
- color: AppColor.blackLightHover,
+ Column(
+ spacing: 4,
+ children: [
+ Text(
+ 'افزودن کاربر',
+ style: AppFonts.yekan10.copyWith(
+ color: AppColor.blueNormal,
),
),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Column(
- spacing: 4,
- children: [
- Text(
- 'داود خرم مهری پور',
- style: AppFonts.yekan10.copyWith(
- color: AppColor.blueNormal,
- ),
- ),
- Text(
- '03295224154',
- style: AppFonts.yekan12.copyWith(
- color: AppColor.darkGreyDarkHover,
- ),
- ),
- ],
- ),
- Column(
- spacing: 4,
- children: [
- Text(
- 'افزودن کاربر',
- style: AppFonts.yekan10.copyWith(
- color: AppColor.blueNormal,
- ),
- ),
- Text(
- 'ثبت بازرسی',
- style: AppFonts.yekan12.copyWith(
- color: AppColor.darkGreyDarkHover,
- ),
- ),
- ],
- ),
- Column(
- spacing: 4,
- children: [
- Text(
- 'همدان',
- style: AppFonts.yekan10.copyWith(
- color: AppColor.blueNormal,
- ),
- ),
- Text(
- 'همدان',
- style: AppFonts.yekan12.copyWith(
- color: AppColor.darkGreyDarkHover,
- ),
- ),
- ],
- ),
- ],
+ Text(
+ 'ثبت بازرسی',
+ style: AppFonts.yekan12.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
),
- ),
+ ],
),
- ),
+ Column(
+ spacing: 4,
+ children: [
+ Text(
+ 'همدان',
+ style: AppFonts.yekan10.copyWith(
+ color: AppColor.blueNormal,
+ ),
+ ),
+ Text(
+ 'همدان',
+ style: AppFonts.yekan12.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ ],
+ ),
+ ],
),
),
- );
- }, controller.isExpanded);
+ ),
+ );
}
+
+ Widget historyItem(bool isExpanded, VoidCallback onTap) {
+ return AnimatedContainer(
+ margin: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
+ curve: Curves.easeInOut,
+ duration: Duration(seconds: 1),
+ height: isExpanded ? 364 : 62,
+ child:
+ isExpanded
+ ? markerDetailsWidget(ontap: onTap)
+ : slidableWidgetTwo(onTap: onTap),
+ );
+ }
+
+ Widget markerDetailsWidget({required VoidCallback ontap}) {
+ return GestureDetector(
+ onTap: ontap,
+ behavior: HitTestBehavior.opaque,
+ child: Container(
+ clipBehavior: Clip.antiAlias,
+
+ padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
+ decoration: ShapeDecoration(
+ color: Colors.white,
+ shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
+ ),
+ child: Column(
+ spacing: 15,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ spacing: 12,
+ children: [
+ vecWidgetWithOnTap(
+ assets: Assets.vecEditSvg,
+ onTap: () {},
+ width: 24,
+ height: 24,
+ color: AppColor.blueNormal,
+ ),
+ Text(
+ 'سوابق بازرسی من',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ vecWidgetWithOnTap(
+ assets: Assets.vecTrashSvg,
+ width: 24,
+ height: 24,
+ color: AppColor.redNormal,
+ onTap: () {},
+ ),
+ ],
+ ),
+ Container(
+ height: 32,
+ clipBehavior: Clip.antiAlias,
+ padding: EdgeInsets.symmetric(horizontal: 10, vertical: 4),
+ decoration: ShapeDecoration(
+ color: AppColor.blueLight,
+ shape: RoundedRectangleBorder(
+ side: BorderSide(width: 1, color: AppColor.blueLightHover),
+ ),
+ ),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ 'تاریخ بازرسی',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ Text(
+ '1403/12/12',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ ],
+ ),
+ ),
+
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Text(
+ 'شماره همراه',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ Text(
+ '0326598653',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ ],
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.center,
+
+ children: [
+ Text(
+ 'آخرین فعالیت',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+
+ Text(
+ '1409/12/12',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ ],
+ ),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.center,
+
+ children: [
+ Text(
+ 'موجودی',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ Text(
+ '5کیلوگرم',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ ],
+ ),
+
+ ...List.generate(
+ 5,
+ (index) => Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.center,
+
+ children: [
+ Text(
+ 'فروش رفته',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ Text(
+ '0 کیلوگرم',
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan14.copyWith(
+ color: AppColor.darkGreyDarkHover,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+
+ Column optionWidget({
+ required RxInt selected,
+ required String title,
+ required List options,
+ }) {
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ title,
+ textAlign: TextAlign.center,
+ style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal),
+ ),
+
+ Wrap(
+ runSpacing: 8,
+ spacing: 8,
+ children:
+ options
+ .map(
+ (e) => ObxValue((data) {
+ return ChoiceChip(
+ onSelected: (value) {
+ selected.value = options.indexOf(e);
+ },
+ selectedColor: AppColor.blueNormal,
+ labelStyle:
+ data.value == options.indexOf(e)
+ ? AppFonts.yekan13.copyWith(
+ color: AppColor.whiteLight,
+ )
+ : AppFonts.yekan12.copyWith(
+ color: AppColor.darkGreyNormalActive,
+ ),
+ checkmarkColor: Colors.white,
+ label: Text(e),
+ selected: options.indexOf(e) == data.value,
+ );
+ }, selected),
+ )
+ .toList(),
+ ),
+ ],
+ );
+ }
+
+ Container headerInfo({
+ required String title,
+ required String description,
+ Color? background,
+ }) {
+ return Container(
+ clipBehavior: Clip.antiAlias,
+ padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12),
+ decoration: ShapeDecoration(
+ color: background ?? AppColor.blueLight,
+ shape: RoundedRectangleBorder(
+ side: BorderSide(width: 1, color: AppColor.blackLightHover),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ ),
+ alignment: AlignmentDirectional.center,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ spacing: 10,
+ children: [
+ Text(title, style: AppFonts.yekan10),
+
+ Text(description, style: AppFonts.yekan12),
+ ],
+ ),
+ );
+ }
+
}
diff --git a/features/supervision/lib/presentation/filter/view.dart b/features/supervision/lib/presentation/filter/view.dart
index 0c6147a..5b4f6eb 100644
--- a/features/supervision/lib/presentation/filter/view.dart
+++ b/features/supervision/lib/presentation/filter/view.dart
@@ -627,4 +627,5 @@ class SupervisionFilterPage extends GetView {
);
}
+
}
diff --git a/features/supervision/lib/presentation/profile/logic.dart b/features/supervision/lib/presentation/profile/logic.dart
new file mode 100644
index 0000000..ced5ff0
--- /dev/null
+++ b/features/supervision/lib/presentation/profile/logic.dart
@@ -0,0 +1,33 @@
+import 'package:rasadyar_core/core.dart';
+
+class ProfileLogic extends GetxController {
+
+
+ List roles = [
+ 'کاربر عادی',
+ 'کاربر ویژه',
+ 'کاربر VIP',
+ 'کاربر نقره ای',
+ 'کاربر طلایی',
+
+ ];
+
+
+
+
+ RxInt selectedRole = 0.obs;
+ RxInt selectedInformationType = 0.obs;
+
+
+ @override
+ void onReady() {
+ // TODO: implement onReady
+ super.onReady();
+ }
+
+ @override
+ void onClose() {
+ // TODO: implement onClose
+ super.onClose();
+ }
+}
diff --git a/features/supervision/lib/presentation/profile/view.dart b/features/supervision/lib/presentation/profile/view.dart
new file mode 100644
index 0000000..7c2b49e
--- /dev/null
+++ b/features/supervision/lib/presentation/profile/view.dart
@@ -0,0 +1,257 @@
+import 'package:flutter/material.dart';
+import 'package:rasadyar_core/core.dart';
+
+import 'logic.dart';
+
+class ProfilePage extends GetView {
+ const ProfilePage({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Column(
+ spacing: 30,
+ children: [
+ SizedBox(
+ height: Get.height * 0.3,
+ child: Stack(
+ fit: StackFit.expand,
+ alignment: Alignment.center,
+ clipBehavior: Clip.none,
+ children: [
+ vecWidget(Assets.vecBgHeaderUserProfileSvg, fit: BoxFit.cover),
+
+ Positioned(
+ bottom: -20,
+ left: 0,
+ right: 0,
+ child: SizedBox(
+ width: 110,
+ height: 110,
+ child: CircleAvatar(
+ backgroundColor: AppColor.blueLightHover,
+ child: FaIcon(
+ FontAwesomeIcons.user,
+ size: 45,
+ color: Colors.white,
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ Expanded(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+
+ spacing: 16,
+ children: [
+ SizedBox(
+ height: 75,
+ child: ListView.separated(
+ shrinkWrap: true,
+ padding: EdgeInsets.all(16),
+ scrollDirection: Axis.horizontal,
+ itemBuilder:
+ (context, index) => ObxValue((data) {
+ return ChoiceChip(
+ onSelected: (value) {
+ data.value = index;
+ },
+ selectedColor: AppColor.blueNormal,
+ labelStyle:
+ data.value == index
+ ? AppFonts.yekan13.copyWith(
+ color: AppColor.whiteLight,
+ )
+ : AppFonts.yekan12.copyWith(
+ color: AppColor.darkGreyNormalActive,
+ ),
+ checkmarkColor: Colors.white,
+ label: Text(controller.roles[index]),
+ selected: index == data.value,
+ );
+ }, controller.selectedRole),
+
+ separatorBuilder: (context, index) => SizedBox(width: 8),
+ itemCount: controller.roles.length,
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 30,
+ vertical: 10,
+ ),
+ child: Expanded(
+ child: ObxValue((data) {
+ return switch (data.value) {
+ 0 => userProfileInformation(),
+ 1 => bankInformationWidget(),
+ 2 => invoiceIssuanceInformation(),
+ int() => Placeholder(),
+ };
+ }, controller.selectedInformationType),
+ ),
+ ),
+
+ ObxValue((data) {
+ return Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 20),
+ child: Wrap(
+ spacing: 20,
+ runSpacing: 10,
+ children: [
+ cardActionWidget(
+ title: 'اطلاعات کاربری',
+ onPressed: () {
+ data.value = 0;
+ },
+ icon: Assets.vecProfileUserSvg,
+ selected: data.value == 0,
+ ),
+ cardActionWidget(
+ title: 'اطلاعات بانکی',
+ onPressed: () {
+ data.value = 1;
+ },
+ icon: Assets.vecInformationSvg,
+ selected: data.value == 1,
+ ),
+ cardActionWidget(
+ title: 'اطلاعات \nصدور فاکتور',
+ onPressed: () {
+ data.value = 2;
+ },
+ icon: Assets.vecReceiptDiscountSvg,
+ selected: data.value == 2,
+ ),
+ ],
+ ),
+ );
+ }, controller.selectedInformationType),
+ ],
+ ),
+ ),
+ ],
+ );
+ }
+
+ Container invoiceIssuanceInformation() => Container();
+
+ Widget bankInformationWidget() => Column(
+ spacing: 16,
+ children: [
+ itemList(title: 'نام بانک', content: 'سامان'),
+ itemList(title: 'نام صاحب حساب', content: 'رضا رضایی'),
+ itemList(title: 'شماره کارت ', content: '54154545415'),
+ itemList(title: 'شماره حساب', content: '62565263263652'),
+ itemList(title: 'شماره شبا', content: '62565263263652'),
+ ],
+ );
+
+ Column userProfileInformation() {
+ return Column(
+ spacing: 10,
+ children: [
+ itemList(
+ title: 'نام و نام خانوادگی',
+ content: 'آیدا گل محمدی',
+ icon: Assets.vecUserSvg,
+ ),
+ itemList(
+ title: 'موبایل',
+ content: '09302654896',
+ icon: Assets.vecCallSvg,
+ ),
+ itemList(
+ title: 'کدملی',
+ content: 'نا مشخص',
+ icon: Assets.vecTagUserSvg,
+ ),
+ itemList(
+ title: 'شماره شناسنامه',
+ content: 'نا مشخص',
+ icon: Assets.vecUserSquareSvg,
+ ),
+ itemList(
+ title: 'تاریخ تولد',
+ content: '1404/10/12',
+ icon: Assets.vecCalendarSvg,
+ ),
+ itemList(
+ title: 'استان',
+ content: 'لرستان',
+ icon: Assets.vecPictureFrameSvg,
+ ),
+ itemList(title: 'شهر', content: 'خرم آباد', icon: Assets.vecMapSvg),
+ ],
+ );
+ }
+
+ Widget itemList({
+ required String title,
+ required String content,
+ String? icon,
+ }) => Row(
+ spacing: 4,
+ children: [
+ if (icon != null)
+ Padding(
+ padding: const EdgeInsets.only(left: 8.0),
+ child: vecWidget(
+ icon,
+ width: 20,
+ height: 20,
+ color: AppColor.blueNormal,
+ ),
+ ),
+ Text(title, style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal)),
+ Spacer(),
+ Text(
+ content,
+ style: AppFonts.yekan13.copyWith(color: AppColor.darkGreyNormalHover),
+ ),
+ ],
+ );
+
+ Widget cardActionWidget({
+ required String title,
+ required VoidCallback onPressed,
+ required String icon,
+ bool selected = false,
+ }) {
+ return GestureDetector(
+ onTap: onPressed,
+ child: Column(
+ spacing: 4,
+ children: [
+ Container(
+ width: 52,
+ height: 52,
+ padding: EdgeInsets.all(8),
+ decoration: ShapeDecoration(
+ color: selected ? AppColor.blueLightActive : AppColor.blueLight,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(8),
+ ),
+ ),
+ child: vecWidget(
+ icon,
+ width: 40,
+ height: 40,
+ color: selected ? AppColor.blueNormalActive : AppColor.blueNormal,
+ ),
+ ),
+ SizedBox(height: 2),
+ Text(
+ title,
+ style: AppFonts.yekan10.copyWith(
+ color: selected ? AppColor.blueNormal : AppColor.blueLightActive,
+ ),
+ textAlign: TextAlign.center,
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/features/supervision/lib/presentation/root/logic.dart b/features/supervision/lib/presentation/root/logic.dart
index 4d76474..c5d51a7 100644
--- a/features/supervision/lib/presentation/root/logic.dart
+++ b/features/supervision/lib/presentation/root/logic.dart
@@ -2,18 +2,14 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:supervision/presentation/action/view.dart';
import 'package:supervision/presentation/filter/view.dart';
+import 'package:supervision/presentation/profile/view.dart';
class RootLogic extends GetxController {
RxInt currentIndex = 0.obs;
- List pages = [
- SupervisionFilterPage(),
- ActionPage(),
- Placeholder(color: Colors.amber),
- ];
+ List pages = [SupervisionFilterPage(), ActionPage(), ProfilePage()];
@override
void onReady() {
-
super.onReady();
}
diff --git a/features/supervision/lib/presentation/routes/app_pages.dart b/features/supervision/lib/presentation/routes/app_pages.dart
index 07404d2..792d402 100644
--- a/features/supervision/lib/presentation/routes/app_pages.dart
+++ b/features/supervision/lib/presentation/routes/app_pages.dart
@@ -7,6 +7,8 @@ import 'package:supervision/presentation/display_information/view.dart';
import 'package:supervision/presentation/filter/logic.dart';
import 'package:supervision/presentation/location_details/logic.dart';
import 'package:supervision/presentation/location_details/view.dart';
+import 'package:supervision/presentation/profile/logic.dart';
+import 'package:supervision/presentation/profile/view.dart';
import 'package:supervision/presentation/registration_of_violation/logic.dart';
import 'package:supervision/presentation/registration_of_violation/view.dart';
import 'package:supervision/presentation/root/logic.dart';
@@ -25,6 +27,7 @@ sealed class SupervisionPages {
Get.put(SupervisionFilterLogic());
Get.lazyPut(() => LocationDetailsLogic(), fenix: true);
Get.lazyPut(() => ActionLogic(), fenix: true);
+ Get.lazyPut(() => ProfileLogic(), fenix: true);
}),
),
@@ -43,10 +46,17 @@ sealed class SupervisionPages {
name: SupervisionRoutes.supervisionRegistrationOfViolation,
page: () => RegistrationOfViolationPage(),
binding: BindingsBuilder.put(() => RegistrationOfViolationLogic()),
- ), GetPage(
+ ),
+
+ GetPage(
name: SupervisionRoutes.supervisionDisplayInformation,
page: () => DisplayInformationPage(),
binding: BindingsBuilder.put(() => DisplayInformationLogic()),
),
+ GetPage(
+ name: SupervisionRoutes.supervisionUserProfile,
+ page: () => ProfilePage(),
+ binding: BindingsBuilder.put(() => ProfileLogic()),
+ ),
];
}
diff --git a/features/supervision/lib/presentation/routes/app_routes.dart b/features/supervision/lib/presentation/routes/app_routes.dart
index 011dee1..6397834 100644
--- a/features/supervision/lib/presentation/routes/app_routes.dart
+++ b/features/supervision/lib/presentation/routes/app_routes.dart
@@ -3,10 +3,11 @@ sealed class SupervisionRoutes {
static const supervision = '/supervision';
static const supervisionAction = '$supervision/action';
- static const supervisionUserSetting = '$supervision/userSettings';
+ static const supervisionUserProfile = '$supervision/userSettings';
static const supervisionLocationDetails = '$supervision/locationDetails';
static const supervisionAddSupervision = '$supervisionLocationDetails/addSupervision';
static const supervisionRegistrationOfViolation = '$supervisionAddSupervision/RegistrationOfViolation';
static const supervisionDisplayInformation = '$supervisionRegistrationOfViolation/DisplayInformation';
+
}
diff --git a/lib/main.dart b/lib/main.dart
index 0839833..6e2dc9d 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,3 +1,4 @@
+import 'package:device_preview/device_preview.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:rasadyar_app/domain/service/user/user_service.dart';
@@ -12,6 +13,29 @@ void main() async {
await setupAllProvider();
runApp(MyApp());
+ // runApp(DevicePreview(builder: (context) => ForDevicePreview(),));
+}
+
+
+
+class ForDevicePreview extends StatelessWidget {
+ const ForDevicePreview({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return GetMaterialApp(
+ useInheritedMediaQuery: true,
+ locale: DevicePreview.locale(context),
+ builder: DevicePreview.appBuilder,
+ title: 'رصدیار',
+ theme: ThemeData(
+ colorScheme: ColorScheme.fromSeed(seedColor: AppColor.blueNormal),
+ ),
+ initialRoute: AppPages.initRoutes,
+ initialBinding: BindingsBuilder.put(() => UserService()),
+ getPages: AppPages.pages,
+ );
+ }
}
class MyApp extends StatelessWidget {
diff --git a/lib/presentation/common/assets.dart b/lib/presentation/common/assets.dart
index 0859799..0e70b14 100644
--- a/lib/presentation/common/assets.dart
+++ b/lib/presentation/common/assets.dart
@@ -5,41 +5,68 @@ class Assets {
static const String iconsAdd = 'assets/icons/add.svg';
static const String iconsArrowLeft = 'assets/icons/arrow_left.svg';
static const String iconsArrowRight = 'assets/icons/arrow_right.svg';
+ static const String iconsBgHeaderUserProfile = 'assets/icons/bg_header_user_profile.svg';
static const String iconsCalendar = 'assets/icons/calendar.svg';
+ static const String iconsCalendarSearch = 'assets/icons/calendar_search.svg';
static const String iconsCall = 'assets/icons/call.svg';
+ static const String iconsDiagram = 'assets/icons/diagram.svg';
static const String iconsDownload = 'assets/icons/download.svg';
static const String iconsEdit = 'assets/icons/edit.svg';
+ static const String iconsExcelDownload = 'assets/icons/excel_download.svg';
static const String iconsFilter = 'assets/icons/filter.svg';
static const String iconsGps = 'assets/icons/gps.svg';
+ static const String iconsInformation = 'assets/icons/information.svg';
static const String iconsKey = 'assets/icons/key.svg';
+ static const String iconsLogout = 'assets/icons/logout.svg';
static const String iconsMap = 'assets/icons/map.svg';
static const String iconsMapMarker = 'assets/icons/map_marker.svg';
static const String iconsMessageAdd = 'assets/icons/message_add.svg';
+ static const String iconsPdfDownload = 'assets/icons/pdf_download.svg';
+ static const String iconsPictureFrame = 'assets/icons/picture_frame.svg';
static const String iconsProfileCircle = 'assets/icons/profile_circle.svg';
+ static const String iconsProfileUser = 'assets/icons/profile_user.svg';
+ static const String iconsReceiptDiscount = 'assets/icons/receipt_discount.svg';
static const String iconsScan = 'assets/icons/scan.svg';
static const String iconsScanBarcode = 'assets/icons/scan_barcode.svg';
static const String iconsSecurityTime = 'assets/icons/security_time.svg';
static const String iconsSetting = 'assets/icons/setting.svg';
+ static const String iconsTagUser = 'assets/icons/tag_user.svg';
static const String iconsTrash = 'assets/icons/trash.svg';
+ static const String iconsUser = 'assets/icons/user.svg';
+ static const String iconsUserSquare = 'assets/icons/user_square.svg';
static const String imagesInnerSplash = 'assets/images/inner_splash.webp';
static const String imagesOutterSplash = 'assets/images/outter_splash.webp';
static const String vecAddSvg = 'assets/vec/add.svg.vec';
static const String vecArrowLeftSvg = 'assets/vec/arrow_left.svg.vec';
static const String vecArrowRightSvg = 'assets/vec/arrow_right.svg.vec';
+ static const String vecBgHeaderUserProfileSvg = 'assets/vec/bg_header_user_profile.svg.vec';
+ static const String vecCalendarSearchSvg = 'assets/vec/calendar_search.svg.vec';
+ static const String vecCalendarSvg = 'assets/vec/calendar.svg.vec';
static const String vecCallSvg = 'assets/vec/call.svg.vec';
+ static const String vecDiagramSvg = 'assets/vec/diagram.svg.vec';
static const String vecDownloadSvg = 'assets/vec/download.svg.vec';
static const String vecEditSvg = 'assets/vec/edit.svg.vec';
+ static const String vecExcelDownloadSvg = 'assets/vec/excel_download.svg.vec';
static const String vecFilterSvg = 'assets/vec/filter.svg.vec';
static const String vecGpsSvg = 'assets/vec/gps.svg.vec';
+ static const String vecInformationSvg = 'assets/vec/information.svg.vec';
static const String vecKeySvg = 'assets/vec/key.svg.vec';
+ static const String vecLogoutSvg = 'assets/vec/logout.svg.vec';
static const String vecMapMarkerSvg = 'assets/vec/map_marker.svg.vec';
static const String vecMapSvg = 'assets/vec/map.svg.vec';
static const String vecMessageAddSvg = 'assets/vec/message_add.svg.vec';
+ static const String vecPdfDownloadSvg = 'assets/vec/pdf_download.svg.vec';
+ static const String vecPictureFrameSvg = 'assets/vec/picture_frame.svg.vec';
static const String vecProfileCircleSvg = 'assets/vec/profile_circle.svg.vec';
+ static const String vecProfileUserSvg = 'assets/vec/profile_user.svg.vec';
+ static const String vecReceiptDiscountSvg = 'assets/vec/receipt_discount.svg.vec';
static const String vecScanBarcodeSvg = 'assets/vec/scan_barcode.svg.vec';
static const String vecScanSvg = 'assets/vec/scan.svg.vec';
static const String vecSecurityTimeSvg = 'assets/vec/security_time.svg.vec';
static const String vecSettingSvg = 'assets/vec/setting.svg.vec';
+ static const String vecTagUserSvg = 'assets/vec/tag_user.svg.vec';
static const String vecTrashSvg = 'assets/vec/trash.svg.vec';
+ static const String vecUserSquareSvg = 'assets/vec/user_square.svg.vec';
+ static const String vecUserSvg = 'assets/vec/user.svg.vec';
}
diff --git a/lib/presentation/pages/system_design/system_design.dart b/lib/presentation/pages/system_design/system_design.dart
index a5b08b5..6c5c04d 100644
--- a/lib/presentation/pages/system_design/system_design.dart
+++ b/lib/presentation/pages/system_design/system_design.dart
@@ -142,7 +142,7 @@ class _SystemDesignPageState extends State {
spacing: 14,
children: [
Row(),
-
+/*
RFabOutlined.smallAdd(onPressed: () {}),
RFabOutlined.smallAdd(onPressed: null),
@@ -153,7 +153,7 @@ class _SystemDesignPageState extends State {
RFabOutlined.add(onPressed: null),
RFabOutlined.addNoBorder(onPressed: () {}),
- RFabOutlined.addNoBorder(onPressed: null),
+ RFabOutlined.addNoBorder(onPressed: null),*/
],
),
);
@@ -175,7 +175,7 @@ class _SystemDesignPageState extends State {
children: [
Row(),
- RFab.smallAdd(onPressed: () {}),
+ /* RFab.smallAdd(onPressed: () {}),
RFab.smallAdd(onPressed: null),
RFab.add(onPressed: () {}),
@@ -221,7 +221,7 @@ class _SystemDesignPageState extends State {
RFab.smallBack(onPressed: null),
RFab.back(onPressed: () {}),
- RFab.back(onPressed: null),
+ RFab.back(onPressed: null),*/
],
),
);
diff --git a/lib/presentation/widget/buttons/fab.dart b/lib/presentation/widget/buttons/fab.dart
index 84a4e8b..360b850 100644
--- a/lib/presentation/widget/buttons/fab.dart
+++ b/lib/presentation/widget/buttons/fab.dart
@@ -1,3 +1,4 @@
+/*
import 'package:flutter/material.dart';
import 'package:rasadyar_app/presentation/common/app_color.dart';
import 'package:rasadyar_app/presentation/common/assets.dart';
@@ -230,3 +231,4 @@ class _RFabState extends State {
);
}
}
+*/
diff --git a/lib/presentation/widget/buttons/fab_outlined.dart b/lib/presentation/widget/buttons/fab_outlined.dart
index ecd9ea1..ab6a1ba 100644
--- a/lib/presentation/widget/buttons/fab_outlined.dart
+++ b/lib/presentation/widget/buttons/fab_outlined.dart
@@ -1,3 +1,4 @@
+/*
import 'package:flutter/material.dart';
import 'package:rasadyar_app/presentation/common/app_color.dart';
import 'package:rasadyar_app/presentation/common/assets.dart';
@@ -603,3 +604,4 @@ class _RFabOutlinedState extends State {
}
}
+*/
diff --git a/lib/presentations/common/assets.dart b/lib/presentations/common/assets.dart
deleted file mode 100644
index de73abf..0000000
--- a/lib/presentations/common/assets.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-///This file is automatically generated. DO NOT EDIT, all your changes would be lost.
-class Assets {
- Assets._();
-
- static const String iconsAdd = 'assets/icons/add.svg';
- static const String iconsArrowLeft = 'assets/icons/arrow_left.svg';
- static const String iconsArrowRight = 'assets/icons/arrow_right.svg';
- static const String iconsCalendar = 'assets/icons/calendar.svg';
- static const String iconsCalendarSearch = 'assets/icons/calendar_search.svg';
- static const String iconsCall = 'assets/icons/call.svg';
- static const String iconsDiagram = 'assets/icons/diagram.svg';
- static const String iconsDownload = 'assets/icons/download.svg';
- static const String iconsEdit = 'assets/icons/edit.svg';
- static const String iconsFilter = 'assets/icons/filter.svg';
- static const String iconsGps = 'assets/icons/gps.svg';
- static const String iconsKey = 'assets/icons/key.svg';
- static const String iconsLogout = 'assets/icons/logout.svg';
- static const String iconsMap = 'assets/icons/map.svg';
- static const String iconsMapMarker = 'assets/icons/map_marker.svg';
- static const String iconsMessageAdd = 'assets/icons/message_add.svg';
- static const String iconsProfileCircle = 'assets/icons/profile_circle.svg';
- static const String iconsProfileUser = 'assets/icons/profile_user.svg';
- static const String iconsScan = 'assets/icons/scan.svg';
- static const String iconsScanBarcode = 'assets/icons/scan_barcode.svg';
- static const String iconsSecurityTime = 'assets/icons/security_time.svg';
- static const String iconsSetting = 'assets/icons/setting.svg';
- static const String iconsTrash = 'assets/icons/trash.svg';
- static const String imagesInnerSplash = 'assets/images/inner_splash.webp';
- static const String imagesOutterSplash = 'assets/images/outter_splash.webp';
- static const String vecAddSvg = 'assets/vec/add.svg.vec';
- static const String vecArrowLeftSvg = 'assets/vec/arrow_left.svg.vec';
- static const String vecArrowRightSvg = 'assets/vec/arrow_right.svg.vec';
- static const String vecCalendarSearchSvg = 'assets/vec/calendar_search.svg.vec';
- static const String vecCalendarSvg = 'assets/vec/calendar.svg.vec';
- static const String vecCallSvg = 'assets/vec/call.svg.vec';
- static const String vecDiagramSvg = 'assets/vec/diagram.svg.vec';
- static const String vecDownloadSvg = 'assets/vec/download.svg.vec';
- static const String vecEditSvg = 'assets/vec/edit.svg.vec';
- static const String vecFilterSvg = 'assets/vec/filter.svg.vec';
- static const String vecGpsSvg = 'assets/vec/gps.svg.vec';
- static const String vecKeySvg = 'assets/vec/key.svg.vec';
- static const String vecLogoutSvg = 'assets/vec/logout.svg.vec';
- static const String vecMapMarkerSvg = 'assets/vec/map_marker.svg.vec';
- static const String vecMapSvg = 'assets/vec/map.svg.vec';
- static const String vecMessageAddSvg = 'assets/vec/message_add.svg.vec';
- static const String vecProfileCircleSvg = 'assets/vec/profile_circle.svg.vec';
- static const String vecProfileUserSvg = 'assets/vec/profile_user.svg.vec';
- static const String vecScanBarcodeSvg = 'assets/vec/scan_barcode.svg.vec';
- static const String vecScanSvg = 'assets/vec/scan.svg.vec';
- static const String vecSecurityTimeSvg = 'assets/vec/security_time.svg.vec';
- static const String vecSettingSvg = 'assets/vec/setting.svg.vec';
- static const String vecTrashSvg = 'assets/vec/trash.svg.vec';
-
-}
diff --git a/packages/core/lib/presentation/common/assets.dart b/packages/core/lib/presentation/common/assets.dart
index de73abf..0e70b14 100644
--- a/packages/core/lib/presentation/common/assets.dart
+++ b/packages/core/lib/presentation/common/assets.dart
@@ -5,50 +5,68 @@ class Assets {
static const String iconsAdd = 'assets/icons/add.svg';
static const String iconsArrowLeft = 'assets/icons/arrow_left.svg';
static const String iconsArrowRight = 'assets/icons/arrow_right.svg';
+ static const String iconsBgHeaderUserProfile = 'assets/icons/bg_header_user_profile.svg';
static const String iconsCalendar = 'assets/icons/calendar.svg';
static const String iconsCalendarSearch = 'assets/icons/calendar_search.svg';
static const String iconsCall = 'assets/icons/call.svg';
static const String iconsDiagram = 'assets/icons/diagram.svg';
static const String iconsDownload = 'assets/icons/download.svg';
static const String iconsEdit = 'assets/icons/edit.svg';
+ static const String iconsExcelDownload = 'assets/icons/excel_download.svg';
static const String iconsFilter = 'assets/icons/filter.svg';
static const String iconsGps = 'assets/icons/gps.svg';
+ static const String iconsInformation = 'assets/icons/information.svg';
static const String iconsKey = 'assets/icons/key.svg';
static const String iconsLogout = 'assets/icons/logout.svg';
static const String iconsMap = 'assets/icons/map.svg';
static const String iconsMapMarker = 'assets/icons/map_marker.svg';
static const String iconsMessageAdd = 'assets/icons/message_add.svg';
+ static const String iconsPdfDownload = 'assets/icons/pdf_download.svg';
+ static const String iconsPictureFrame = 'assets/icons/picture_frame.svg';
static const String iconsProfileCircle = 'assets/icons/profile_circle.svg';
static const String iconsProfileUser = 'assets/icons/profile_user.svg';
+ static const String iconsReceiptDiscount = 'assets/icons/receipt_discount.svg';
static const String iconsScan = 'assets/icons/scan.svg';
static const String iconsScanBarcode = 'assets/icons/scan_barcode.svg';
static const String iconsSecurityTime = 'assets/icons/security_time.svg';
static const String iconsSetting = 'assets/icons/setting.svg';
+ static const String iconsTagUser = 'assets/icons/tag_user.svg';
static const String iconsTrash = 'assets/icons/trash.svg';
+ static const String iconsUser = 'assets/icons/user.svg';
+ static const String iconsUserSquare = 'assets/icons/user_square.svg';
static const String imagesInnerSplash = 'assets/images/inner_splash.webp';
static const String imagesOutterSplash = 'assets/images/outter_splash.webp';
static const String vecAddSvg = 'assets/vec/add.svg.vec';
static const String vecArrowLeftSvg = 'assets/vec/arrow_left.svg.vec';
static const String vecArrowRightSvg = 'assets/vec/arrow_right.svg.vec';
+ static const String vecBgHeaderUserProfileSvg = 'assets/vec/bg_header_user_profile.svg.vec';
static const String vecCalendarSearchSvg = 'assets/vec/calendar_search.svg.vec';
static const String vecCalendarSvg = 'assets/vec/calendar.svg.vec';
static const String vecCallSvg = 'assets/vec/call.svg.vec';
static const String vecDiagramSvg = 'assets/vec/diagram.svg.vec';
static const String vecDownloadSvg = 'assets/vec/download.svg.vec';
static const String vecEditSvg = 'assets/vec/edit.svg.vec';
+ static const String vecExcelDownloadSvg = 'assets/vec/excel_download.svg.vec';
static const String vecFilterSvg = 'assets/vec/filter.svg.vec';
static const String vecGpsSvg = 'assets/vec/gps.svg.vec';
+ static const String vecInformationSvg = 'assets/vec/information.svg.vec';
static const String vecKeySvg = 'assets/vec/key.svg.vec';
static const String vecLogoutSvg = 'assets/vec/logout.svg.vec';
static const String vecMapMarkerSvg = 'assets/vec/map_marker.svg.vec';
static const String vecMapSvg = 'assets/vec/map.svg.vec';
static const String vecMessageAddSvg = 'assets/vec/message_add.svg.vec';
+ static const String vecPdfDownloadSvg = 'assets/vec/pdf_download.svg.vec';
+ static const String vecPictureFrameSvg = 'assets/vec/picture_frame.svg.vec';
static const String vecProfileCircleSvg = 'assets/vec/profile_circle.svg.vec';
static const String vecProfileUserSvg = 'assets/vec/profile_user.svg.vec';
+ static const String vecReceiptDiscountSvg = 'assets/vec/receipt_discount.svg.vec';
static const String vecScanBarcodeSvg = 'assets/vec/scan_barcode.svg.vec';
static const String vecScanSvg = 'assets/vec/scan.svg.vec';
static const String vecSecurityTimeSvg = 'assets/vec/security_time.svg.vec';
static const String vecSettingSvg = 'assets/vec/setting.svg.vec';
+ static const String vecTagUserSvg = 'assets/vec/tag_user.svg.vec';
static const String vecTrashSvg = 'assets/vec/trash.svg.vec';
+ static const String vecUserSquareSvg = 'assets/vec/user_square.svg.vec';
+ static const String vecUserSvg = 'assets/vec/user.svg.vec';
}
diff --git a/packages/core/pubspec.yaml b/packages/core/pubspec.yaml
index bcc2ec7..724acd2 100644
--- a/packages/core/pubspec.yaml
+++ b/packages/core/pubspec.yaml
@@ -45,6 +45,7 @@ dependencies:
+
dev_dependencies:
flutter_test:
sdk: flutter
diff --git a/pubspec.lock b/pubspec.lock
index 91b7ffd..747dc7c 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -193,6 +193,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.0"
+ device_frame:
+ dependency: transitive
+ description:
+ name: device_frame
+ sha256: d031a06f5d6f4750009672db98a5aa1536aa4a231713852469ce394779a23d75
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
+ device_preview:
+ dependency: "direct main"
+ description:
+ name: device_preview
+ sha256: a694acdd3894b4c7d600f4ee413afc4ff917f76026b97ab06575fe886429ef19
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
fake_async:
dependency: transitive
description:
@@ -238,6 +254,11 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.0.0"
+ flutter_localizations:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
flutter_map:
dependency: transitive
description:
@@ -305,13 +326,13 @@ packages:
source: hosted
version: "3.0.6"
freezed_annotation:
- dependency: "direct main"
+ dependency: "direct overridden"
description:
name: freezed_annotation
- sha256: c87ff004c8aa6af2d531668b46a4ea379f7191dc6dfa066acd53d506da6e044b
+ sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2
url: "https://pub.dev"
source: hosted
- version: "3.0.0"
+ version: "2.4.4"
frontend_server_client:
dependency: transitive
description:
@@ -460,10 +481,10 @@ packages:
dependency: transitive
description:
name: intl
- sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
+ sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
- version: "0.20.2"
+ version: "0.19.0"
io:
dependency: transitive
description:
@@ -481,7 +502,7 @@ packages:
source: hosted
version: "0.7.2"
json_annotation:
- dependency: "direct main"
+ dependency: transitive
description:
name: json_annotation
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
@@ -640,6 +661,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.4"
+ nested:
+ dependency: transitive
+ description:
+ name: nested
+ sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.0"
package_config:
dependency: transitive
description:
@@ -808,6 +837,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.0"
+ provider:
+ dependency: transitive
+ description:
+ name: provider
+ sha256: "489024f942069c2920c844ee18bb3d467c69e48955a4f32d1677f71be103e310"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.1.4"
pub_semver:
dependency: transitive
description:
@@ -839,6 +876,62 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.28.0"
+ shared_preferences:
+ dependency: transitive
+ description:
+ name: shared_preferences
+ sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.3"
+ shared_preferences_android:
+ dependency: transitive
+ description:
+ name: shared_preferences_android
+ sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.10"
+ shared_preferences_foundation:
+ dependency: transitive
+ description:
+ name: shared_preferences_foundation
+ sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.4"
+ shared_preferences_linux:
+ dependency: transitive
+ description:
+ name: shared_preferences_linux
+ sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ shared_preferences_platform_interface:
+ dependency: transitive
+ description:
+ name: shared_preferences_platform_interface
+ sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ shared_preferences_web:
+ dependency: transitive
+ description:
+ name: shared_preferences_web
+ sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.3"
+ shared_preferences_windows:
+ dependency: transitive
+ description:
+ name: shared_preferences_windows
+ sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
shelf:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 546bb1c..97afd30 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -24,9 +24,6 @@ dependencies:
hive_ce: ^2.10.1
hive_ce_flutter: ^2.2.0
- ##code generation
- freezed_annotation: ^3.0.0
- json_annotation: ^4.9.0
#SVG
@@ -45,6 +42,10 @@ dependencies:
rasadyar_core:
path: ./packages/core
+ device_preview: ^1.2.0
+
+dependency_overrides:
+ freezed_annotation: ^2.4.1
dev_dependencies:
flutter_test: