refactor : base page
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
description: This file stores settings for Dart & Flutter DevTools.
|
description: This file stores settings for Dart & Flutter DevTools.
|
||||||
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
||||||
extensions:
|
extensions:
|
||||||
|
- hive_ce: true
|
||||||
@@ -2,11 +2,6 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
class CustomNavigationObserver extends NavigatorObserver {
|
class CustomNavigationObserver extends NavigatorObserver {
|
||||||
bool _isWorkDone = false;
|
|
||||||
|
|
||||||
void setInjectionDone() {
|
|
||||||
_isWorkDone = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didPush(Route route, Route? previousRoute) async {
|
void didPush(Route route, Route? previousRoute) async {
|
||||||
|
|||||||
4
packages/chicken/devtools_options.yaml
Normal file
4
packages/chicken/devtools_options.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
description: This file stores settings for Dart & Flutter DevTools.
|
||||||
|
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
||||||
|
extensions:
|
||||||
|
- hive_ce: true
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/widget/captcha/view.dart';
|
import 'package:rasadyar_chicken/presentation/widget/captcha/view.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
@@ -10,102 +11,110 @@ class AuthPage extends GetView<AuthLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return ChickenBasePage(
|
||||||
body: PopScope(
|
isFullScreen: true,
|
||||||
canPop: false,
|
backGroundWidget: BackGroundWidget(
|
||||||
onPopInvokedWithResult: (didPop, result) {
|
gradient: LinearGradient(
|
||||||
Get.back(result: -1);
|
begin: Alignment.topRight,
|
||||||
},
|
end: Alignment.bottomLeft,
|
||||||
child: Stack(
|
colors: [
|
||||||
alignment: Alignment.center,
|
const Color(0xFFB2C9FF).withValues(alpha: 1.0), // 0%
|
||||||
fit: StackFit.expand,
|
const Color(0xFF40BB93).withValues(alpha: 0.11), // 50%
|
||||||
|
const Color(0xFF93B6D3).withValues(alpha: 1.0), // 100%
|
||||||
children: [
|
],
|
||||||
Assets.vec.bgAuthSvg.svg(fit: BoxFit.fill),
|
stops: const [0.0, 0.5, 1.0],
|
||||||
|
),
|
||||||
Center(
|
vecPath: Assets.vec.chickenPatternSvg.path,
|
||||||
child: Padding(
|
),
|
||||||
padding: EdgeInsets.symmetric(horizontal: 10.r),
|
onPopScopTaped: () => Get.back(result: -1),
|
||||||
child: FadeTransition(
|
child: Stack(
|
||||||
opacity: controller.textAnimation,
|
children: [
|
||||||
child: Column(
|
Center(
|
||||||
mainAxisSize: MainAxisSize.min,
|
child: Padding(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
padding: EdgeInsets.symmetric(horizontal: 10.r),
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
child: FadeTransition(
|
||||||
spacing: 12,
|
opacity: controller.textAnimation,
|
||||||
children: [
|
child: Column(
|
||||||
Text(
|
mainAxisSize: MainAxisSize.min,
|
||||||
'به سامانه رصدطیور خوش آمدید!',
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
textAlign: TextAlign.right,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
style: AppFonts.yekan25Bold.copyWith(color: Colors.white),
|
spacing: 12,
|
||||||
),
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'سامانه رصد و پایش زنجیره تامین، تولید و توزیع کالا های اساسی',
|
'به سامانه رصدطیور خوش آمدید!',
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.right,
|
||||||
style: AppFonts.yekan16.copyWith(color: Colors.white),
|
style: AppFonts.yekan25Bold.copyWith(color: AppColor.darkGreyDarkActive),
|
||||||
),
|
),
|
||||||
],
|
Text(
|
||||||
),
|
'سامانه رصد و پایش زنجیره تامین، تولید و توزیع کالا های اساسی',
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDarkActive),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
|
||||||
Obx(() {
|
Obx(() {
|
||||||
final screenHeight = MediaQuery.of(context).size.height;
|
final screenHeight = MediaQuery.of(context).size.height;
|
||||||
final targetTop = (screenHeight - 676) / 2;
|
final targetTop = (screenHeight - 676) / 2;
|
||||||
|
|
||||||
return AnimatedPositioned(
|
return AnimatedPositioned(
|
||||||
duration: const Duration(milliseconds: 1200),
|
duration: const Duration(milliseconds: 1200),
|
||||||
curve: Curves.linear,
|
curve: Curves.linear,
|
||||||
top: controller.showCard.value ? targetTop : screenHeight,
|
top: controller.showCard.value ? targetTop : screenHeight,
|
||||||
left: 10.r,
|
left: 10.r,
|
||||||
right: 10.r,
|
right: 10.r,
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 381.w,
|
width: 381.w,
|
||||||
height: 676.h,
|
height: 676.h,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
borderRadius: BorderRadius.circular(40),
|
borderRadius: BorderRadius.circular(40),
|
||||||
),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
SizedBox(height: 50.h),
|
|
||||||
LogoWidget(
|
|
||||||
title: 'سامانه رصدطیور',
|
|
||||||
),
|
|
||||||
SizedBox(height: 20.h),
|
|
||||||
useAndPassFrom(),
|
|
||||||
SizedBox(height: 24.h),
|
|
||||||
RichText(
|
|
||||||
text: TextSpan(
|
|
||||||
children: [
|
|
||||||
TextSpan(
|
|
||||||
text: 'مطالعه بیانیه ',
|
|
||||||
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDark),
|
|
||||||
),
|
|
||||||
TextSpan(
|
|
||||||
recognizer: TapGestureRecognizer()
|
|
||||||
..onTap = () {
|
|
||||||
Get.bottomSheet(
|
|
||||||
privacyPolicyWidget(),
|
|
||||||
isScrollControlled: true,
|
|
||||||
enableDrag: true,
|
|
||||||
ignoreSafeArea: false,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
text: 'حریم خصوصی',
|
|
||||||
style: AppFonts.yekan16.copyWith(color: AppColor.blueNormal),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
child: Column(
|
||||||
}),
|
children: [
|
||||||
],
|
SizedBox(height: 50.h),
|
||||||
),
|
LogoWidget(
|
||||||
|
vecPath: Assets.vec.rasadToyorSvg.path,
|
||||||
|
width: 85.w,
|
||||||
|
height: 85.h,
|
||||||
|
titleStyle: AppFonts.yekan20Bold.copyWith(color: Color(0xFF4665AF)),
|
||||||
|
title: 'رصدطیور',
|
||||||
|
),
|
||||||
|
SizedBox(height: 20.h),
|
||||||
|
useAndPassFrom(),
|
||||||
|
SizedBox(height: 24.h),
|
||||||
|
RichText(
|
||||||
|
text: TextSpan(
|
||||||
|
children: [
|
||||||
|
TextSpan(
|
||||||
|
text: 'مطالعه بیانیه ',
|
||||||
|
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDark),
|
||||||
|
),
|
||||||
|
TextSpan(
|
||||||
|
recognizer: TapGestureRecognizer()
|
||||||
|
..onTap = () {
|
||||||
|
Get.bottomSheet(
|
||||||
|
privacyPolicyWidget(),
|
||||||
|
isScrollControlled: true,
|
||||||
|
enableDrag: true,
|
||||||
|
ignoreSafeArea: false,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
text: 'حریم خصوصی',
|
||||||
|
style: AppFonts.yekan16.copyWith(color: AppColor.blueNormal),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -341,5 +350,4 @@ class AuthPage extends GetView<AuthLogic> {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_chicken/data/common/fa_user_role.dart';
|
import 'package:rasadyar_chicken/data/common/fa_user_role.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/widget/app_bar.dart';
|
import 'package:rasadyar_chicken/presentation/widget/app_bar.dart';
|
||||||
|
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
import 'logic.dart';
|
import 'logic.dart';
|
||||||
@@ -10,14 +11,9 @@ class RolePage extends GetView<RoleLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return ChickenBasePage(
|
||||||
appBar: chickenAppBar(
|
isBase: true,
|
||||||
hasBack: false,
|
child: Column(
|
||||||
hasFilter: false,
|
|
||||||
hasSearch: false,
|
|
||||||
isBase: false,
|
|
||||||
),
|
|
||||||
body: Column(
|
|
||||||
children: [
|
children: [
|
||||||
Assets.images.selectRole.image(
|
Assets.images.selectRole.image(
|
||||||
height: 212.h,
|
height: 212.h,
|
||||||
@@ -78,6 +74,7 @@ Widget roleCard({
|
|||||||
height: height?.h ?? 48.h,
|
height: height?.h ?? 48.h,
|
||||||
margin: EdgeInsets.all(8.w),
|
margin: EdgeInsets.all(8.w),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
borderRadius: BorderRadius.circular(8.r),
|
borderRadius: BorderRadius.circular(8.r),
|
||||||
border: Border.all(color: AppColor.blueNormal, width: 1.w),
|
border: Border.all(color: AppColor.blueNormal, width: 1.w),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ class FarmPage extends GetView<FarmLogic> {
|
|||||||
hasFilter: false,
|
hasFilter: false,
|
||||||
hasSearch: false,
|
hasSearch: false,
|
||||||
isBase: true,
|
isBase: true,
|
||||||
|
|
||||||
routes: [],
|
routes: [],
|
||||||
backId: poultryFirstKey,
|
backId: poultryFirstKey,
|
||||||
widgets: [firstTagInformation(), farmListWidget()],
|
widgets: [firstTagInformation(), farmListWidget()],
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart' hide LinearGradient;
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
|
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
|
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/widget/app_bar.dart';
|
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
import 'package:rasadyar_core/presentation/widget/custom/information_card_widget.dart';
|
import 'package:rasadyar_core/presentation/widget/custom/information_card_widget.dart';
|
||||||
|
|
||||||
@@ -13,72 +13,71 @@ class PoultryScienceHomePage extends GetView<PoultryScienceHomeLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return ChickenBasePage(
|
||||||
backgroundColor: AppColor.bgLight,
|
isBase: true,
|
||||||
appBar: chickenAppBar(
|
hasNotification: true,
|
||||||
hasBack: false,
|
hasNews: true,
|
||||||
hasFilter: false,
|
scrollable: true,
|
||||||
hasSearch: false,
|
|
||||||
|
|
||||||
),
|
widgets: [
|
||||||
body: SingleChildScrollView(
|
SizedBox(height: 8.h),
|
||||||
physics: BouncingScrollPhysics(),
|
InkWell(
|
||||||
child: Column(
|
onTap: () {
|
||||||
children: [
|
controller.isExpanded.value = !controller.isExpanded.value;
|
||||||
SizedBox(height: 22.h),
|
},
|
||||||
InkWell(
|
child: Stack(
|
||||||
onTap: () {
|
clipBehavior: Clip.none,
|
||||||
controller.isExpanded.value = !controller.isExpanded.value;
|
children: [
|
||||||
},
|
Container(
|
||||||
child: Stack(
|
margin: EdgeInsetsGeometry.all(6),
|
||||||
clipBehavior: Clip.none,
|
decoration: BoxDecoration(
|
||||||
children: [
|
color: Colors.white,
|
||||||
Container(
|
borderRadius: BorderRadius.circular(8),
|
||||||
margin: EdgeInsetsGeometry.all(6),
|
border: Border.all(width: 0.50, color: const Color(0xFFA9A9A9)),
|
||||||
decoration: BoxDecoration(
|
),
|
||||||
borderRadius: BorderRadius.circular(8),
|
|
||||||
border: Border.all(width: 0.50, color: const Color(0xFFA9A9A9)),
|
|
||||||
),
|
|
||||||
|
|
||||||
child: ObxValue((data) {
|
child: ObxValue((data) {
|
||||||
return AnimatedSize(
|
return AnimatedSize(
|
||||||
duration: Duration(milliseconds: 300),
|
duration: Duration(milliseconds: 300),
|
||||||
child: data.value ? mainItemWidget() : mainItemWidgetExpanded(),
|
child: data.value ? mainItemWidget() : mainItemWidgetExpanded(),
|
||||||
);
|
);
|
||||||
}, controller.isExpanded),
|
}, controller.isExpanded),
|
||||||
),
|
|
||||||
Positioned(
|
|
||||||
top: -4,
|
|
||||||
right: 20,
|
|
||||||
child: Container(
|
|
||||||
color: Colors.white,
|
|
||||||
padding: EdgeInsets.symmetric(horizontal: 8),
|
|
||||||
child: Row(
|
|
||||||
spacing: 8,
|
|
||||||
children: [
|
|
||||||
Assets.vec.chicken2Svg.svg(
|
|
||||||
width: 16.w,
|
|
||||||
height: 16.h,
|
|
||||||
colorFilter: ColorFilter.mode(AppColor.iconColor, BlendMode.srcIn),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'اطلاعات فارمها',
|
|
||||||
textAlign: TextAlign.right,
|
|
||||||
style: AppFonts.yekan16.copyWith(color: AppColor.iconColor),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
Positioned(
|
||||||
SizedBox(height: 10),
|
top: -10,
|
||||||
widelyWidget(),
|
right: 20,
|
||||||
SizedBox(height: 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: 16.w,
|
||||||
|
height: 16.h,
|
||||||
|
colorFilter: ColorFilter.mode(AppColor.blueDark, BlendMode.srcIn),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'اطلاعات فارمها',
|
||||||
|
textAlign: TextAlign.right,
|
||||||
|
style: AppFonts.yekan16Bold.copyWith(color: AppColor.iconColor),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
SizedBox(height: 10),
|
||||||
|
widelyWidget(),
|
||||||
|
SizedBox(height: 20),
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,39 +86,7 @@ class PoultryScienceHomePage extends GetView<PoultryScienceHomeLogic> {
|
|||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [SizedBox(height: 8), firstTagInformation(), secondTagInformation()],
|
||||||
SizedBox(height: 8),
|
|
||||||
/* Row(
|
|
||||||
spacing: 8,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
width: 40,
|
|
||||||
height: 40,
|
|
||||||
decoration: ShapeDecoration(
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
side: BorderSide(width: 0.25, color: const Color(0xFFB0B0B0)),
|
|
||||||
borderRadius: BorderRadius.circular(4),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: Assets.images.liveChicken.image(
|
|
||||||
width: 40.w,
|
|
||||||
height: 40.h,
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'فارم ها',
|
|
||||||
textAlign: TextAlign.right,
|
|
||||||
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDarkActive),
|
|
||||||
),
|
|
||||||
Spacer(),
|
|
||||||
Icon(CupertinoIcons.chevron_down, size: 18),
|
|
||||||
],
|
|
||||||
),*/
|
|
||||||
firstTagInformation(),
|
|
||||||
secondTagInformation(),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -246,8 +213,9 @@ class PoultryScienceHomePage extends GetView<PoultryScienceHomeLogic> {
|
|||||||
return Container(
|
return Container(
|
||||||
margin: EdgeInsetsGeometry.all(6),
|
margin: EdgeInsetsGeometry.all(6),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
border: Border.all(width: 1, color: AppColor.borderColor),
|
border: Border.all(width: 0.50, color: const Color(0xFFA9A9A9)),
|
||||||
),
|
),
|
||||||
child: Stack(
|
child: Stack(
|
||||||
clipBehavior: Clip.none,
|
clipBehavior: Clip.none,
|
||||||
@@ -312,10 +280,15 @@ class PoultryScienceHomePage extends GetView<PoultryScienceHomeLogic> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
top: -12,
|
top: -17,
|
||||||
right: 11,
|
right: 11,
|
||||||
child: Container(
|
child: Container(
|
||||||
color: Colors.white,
|
padding: EdgeInsets.all(4),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
border: Border.all(width: 0.50, color: const Color(0xFFA9A9A9)),
|
||||||
|
),
|
||||||
child: Text('پر کاربردها', textAlign: TextAlign.right, style: AppFonts.yekan16),
|
child: Text('پر کاربردها', textAlign: TextAlign.right, style: AppFonts.yekan16),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import 'package:rasadyar_chicken/data/models/response/hatching/hatching_models.d
|
|||||||
import 'package:rasadyar_chicken/data/models/response/hatching_report/hatching_report.dart';
|
import 'package:rasadyar_chicken/data/models/response/hatching_report/hatching_report.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.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/base_page/view.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/widget/page_route.dart';
|
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
import 'logic.dart';
|
import 'logic.dart';
|
||||||
@@ -23,24 +22,14 @@ class InspectionPoultrySciencePage extends GetView<InspectionPoultryScienceLogic
|
|||||||
onSearchChanged: (data) => controller.setSearchValue(data),
|
onSearchChanged: (data) => controller.setSearchValue(data),
|
||||||
backId: poultryFirstKey,
|
backId: poultryFirstKey,
|
||||||
routes: controller.routesName,
|
routes: controller.routesName,
|
||||||
//routesWidget: ObxValue((route) => buildContainerPageRoute(route), controller.routesName),
|
|
||||||
child: Stack(
|
|
||||||
children: [
|
|
||||||
Positioned.fill(
|
|
||||||
child: Assets.vec.chickenPatternSvg.svg(
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
colorFilter: ColorFilter.mode(Color(0xFFC3CBDA), BlendMode.srcIn),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
SizedBox(height: 50, child: segmentWidget()),
|
|
||||||
|
|
||||||
Expanded(
|
//routesWidget: ObxValue((route) => buildContainerPageRoute(route), controller.routesName),
|
||||||
child: ObxValue((data) {
|
widgets: [
|
||||||
return data.value == 0 ? hatchingWidget() : reportWidget();
|
SizedBox(height: 50, child: segmentWidget()),
|
||||||
}, controller.selectedSegmentIndex),
|
ObxValue((data) {
|
||||||
),
|
return data.value == 0 ? hatchingWidget() : reportWidget();
|
||||||
],
|
}, controller.selectedSegmentIndex),
|
||||||
),
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
|
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/widget/app_bar.dart';
|
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
import 'logic.dart';
|
import 'logic.dart';
|
||||||
@@ -10,16 +10,7 @@ class PoultryActionPage extends GetView<PoultryActionLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return ChickenBasePage(isBase: true, hasNews: true, hasNotification: true, child: gridWidget());
|
||||||
appBar: chickenAppBar(hasBack: false, hasFilter: false, hasSearch: false, isBase: false),
|
|
||||||
body: Stack(
|
|
||||||
fit: StackFit.expand,
|
|
||||||
children: [
|
|
||||||
Positioned.fill(child: Assets.vec.chickenPatternSvg.svg(fit: BoxFit.cover,)),
|
|
||||||
Positioned.fill(child: gridWidget()),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget gridWidget() {
|
Widget gridWidget() {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:rasadyar_chicken/presentation/routes/pages.dart';
|
import 'package:rasadyar_chicken/presentation/routes/pages.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
|
import 'package:rasadyar_chicken/presentation/routes/routes.dart';
|
||||||
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
|
import 'package:rasadyar_chicken/presentation/utils/nested_keys_utils.dart';
|
||||||
|
import 'package:rasadyar_chicken/presentation/widget/base_page/view.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
import 'logic.dart';
|
import 'logic.dart';
|
||||||
@@ -14,118 +15,92 @@ class PoultryScienceRootPage extends GetView<PoultryScienceRootLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ObxValue((data) {
|
return ChickenBasePage(
|
||||||
return PopScope(
|
isFullScreen: true,
|
||||||
canPop: false,
|
child: ObxValue((data) {
|
||||||
onPopInvokedWithResult: (didPop, result) async {
|
return Stack(
|
||||||
final nestedKey = Get.nestedKey(controller.getNestedKey());
|
children: [
|
||||||
final currentNavigator = nestedKey?.currentState;
|
IndexedStack(
|
||||||
|
children: [
|
||||||
|
Navigator(
|
||||||
|
key: Get.nestedKey(poultryFirstKey),
|
||||||
|
onGenerateRoute: (settings) {
|
||||||
|
final page = ChickenPages.pages.firstWhere(
|
||||||
|
(e) => e.name == settings.name,
|
||||||
|
orElse: () => ChickenPages.pages.firstWhere(
|
||||||
|
(e) => e.name == ChickenRoutes.actionPoultryScience,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
if (currentNavigator?.canPop() ?? false) {
|
return buildRouteFromGetPage(page);
|
||||||
currentNavigator?.pop();
|
},
|
||||||
} else {
|
),
|
||||||
final now = DateTime.now();
|
Navigator(
|
||||||
if (_lastBackPressed == null ||
|
key: Get.nestedKey(poultrySecondKey),
|
||||||
now.difference(_lastBackPressed!) > Duration(seconds: 2)) {
|
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[1]),
|
||||||
_lastBackPressed = now;
|
),
|
||||||
Get.snackbar(
|
Navigator(
|
||||||
'خروج از برنامه',
|
key: Get.nestedKey(poultryThirdKey),
|
||||||
'برای خروج دوباره بازگشت را بزنید',
|
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[2]),
|
||||||
snackPosition: SnackPosition.TOP,
|
),
|
||||||
duration: Duration(seconds: 2),
|
],
|
||||||
backgroundColor: AppColor.warning,
|
index: data.value,
|
||||||
);
|
),
|
||||||
} else {
|
Positioned(
|
||||||
await SystemNavigator.pop();
|
right: 0,
|
||||||
}
|
left: 0,
|
||||||
}
|
bottom: 0,
|
||||||
},
|
child: RBottomNavigation(
|
||||||
child: Scaffold(
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
backgroundColor: AppColor.bgLight,
|
items: [
|
||||||
body: Stack(
|
RBottomNavigationItem(
|
||||||
children: [
|
label: 'عملیات',
|
||||||
IndexedStack(
|
icon: Assets.vec.settingSvg.path,
|
||||||
children: [
|
isSelected: controller.currentPage.value == 0,
|
||||||
Navigator(
|
onTap: () {
|
||||||
key: Get.nestedKey(poultryFirstKey),
|
Get.nestedKey(
|
||||||
onGenerateRoute: (settings) {
|
poultrySecondKey,
|
||||||
final page = ChickenPages.pages.firstWhere(
|
)?.currentState?.popUntil((route) => route.isFirst);
|
||||||
(e) => e.name == settings.name,
|
Get.nestedKey(
|
||||||
orElse: () => ChickenPages.pages.firstWhere(
|
poultryFirstKey,
|
||||||
(e) => e.name == ChickenRoutes.actionPoultryScience,
|
)?.currentState?.popUntil((route) => route.isFirst);
|
||||||
),
|
controller.changePage(0);
|
||||||
);
|
|
||||||
|
|
||||||
return buildRouteFromGetPage(page);
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
Navigator(
|
RBottomNavigationItem(
|
||||||
key: Get.nestedKey(poultrySecondKey),
|
label: 'خانه',
|
||||||
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[1]),
|
icon: Assets.vec.homeSvg.path,
|
||||||
|
isSelected: controller.currentPage.value == 1,
|
||||||
|
onTap: () {
|
||||||
|
Get.nestedKey(
|
||||||
|
poultryFirstKey,
|
||||||
|
)?.currentState?.popUntil((route) => route.isFirst);
|
||||||
|
Get.nestedKey(
|
||||||
|
poultryThirdKey,
|
||||||
|
)?.currentState?.popUntil((route) => route.isFirst);
|
||||||
|
controller.changePage(1);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
Navigator(
|
RBottomNavigationItem(
|
||||||
key: Get.nestedKey(poultryThirdKey),
|
label: 'پروفایل',
|
||||||
onGenerateRoute: (settings) => GetPageRoute(page: () => controller.pages[2]),
|
icon: Assets.vec.profileCircleSvg.path,
|
||||||
|
isSelected: controller.currentPage.value == 2,
|
||||||
|
onTap: () {
|
||||||
|
Get.nestedKey(
|
||||||
|
poultryFirstKey,
|
||||||
|
)?.currentState?.popUntil((route) => route.isFirst);
|
||||||
|
Get.nestedKey(
|
||||||
|
poultrySecondKey,
|
||||||
|
)?.currentState?.popUntil((route) => route.isFirst);
|
||||||
|
controller.changePage(2);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
index: data.value,
|
|
||||||
),
|
),
|
||||||
Positioned(
|
),
|
||||||
right: 0,
|
],
|
||||||
left: 0,
|
);
|
||||||
bottom: 0,
|
}, controller.currentPage),
|
||||||
child: RBottomNavigation(
|
);
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
||||||
items: [
|
|
||||||
RBottomNavigationItem(
|
|
||||||
label: 'عملیات',
|
|
||||||
icon: Assets.vec.settingSvg.path,
|
|
||||||
isSelected: controller.currentPage.value == 0,
|
|
||||||
onTap: () {
|
|
||||||
Get.nestedKey(
|
|
||||||
poultrySecondKey,
|
|
||||||
)?.currentState?.popUntil((route) => route.isFirst);
|
|
||||||
Get.nestedKey(
|
|
||||||
poultryFirstKey,
|
|
||||||
)?.currentState?.popUntil((route) => route.isFirst);
|
|
||||||
controller.changePage(0);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
RBottomNavigationItem(
|
|
||||||
label: 'خانه',
|
|
||||||
icon: Assets.vec.homeSvg.path,
|
|
||||||
isSelected: controller.currentPage.value == 1,
|
|
||||||
onTap: () {
|
|
||||||
Get.nestedKey(
|
|
||||||
poultryFirstKey,
|
|
||||||
)?.currentState?.popUntil((route) => route.isFirst);
|
|
||||||
Get.nestedKey(
|
|
||||||
poultryThirdKey,
|
|
||||||
)?.currentState?.popUntil((route) => route.isFirst);
|
|
||||||
controller.changePage(1);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
RBottomNavigationItem(
|
|
||||||
label: 'پروفایل',
|
|
||||||
icon: Assets.vec.profileCircleSvg.path,
|
|
||||||
isSelected: controller.currentPage.value == 2,
|
|
||||||
onTap: () {
|
|
||||||
Get.nestedKey(
|
|
||||||
poultryFirstKey,
|
|
||||||
)?.currentState?.popUntil((route) => route.isFirst);
|
|
||||||
Get.nestedKey(
|
|
||||||
poultrySecondKey,
|
|
||||||
)?.currentState?.popUntil((route) => route.isFirst);
|
|
||||||
controller.changePage(2);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}, controller.currentPage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
import 'package:rasadyar_chicken/presentation/pages/common/profile/logic.dart';
|
import 'package:rasadyar_chicken/presentation/pages/common/profile/logic.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
|
|
||||||
class GlobalBinding extends Bindings {
|
class GlobalBinding extends Bindings {
|
||||||
@override
|
@override
|
||||||
void dependencies() {
|
void dependencies() {
|
||||||
Get.put(BaseLogic(), permanent: true);
|
Get.lazyPut(() => BaseLogic(), fenix: true);
|
||||||
Get.lazyPut(() => ProfileLogic(), fenix: true);
|
Get.lazyPut(() => ProfileLogic(), fenix: true);
|
||||||
|
|
||||||
|
|
||||||
//root logics
|
//root logics
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ sealed class ChickenPages {
|
|||||||
binding: BindingsBuilder(() {
|
binding: BindingsBuilder(() {
|
||||||
Get.lazyPut(() => AuthLogic());
|
Get.lazyPut(() => AuthLogic());
|
||||||
Get.lazyPut(() => CaptchaWidgetLogic());
|
Get.lazyPut(() => CaptchaWidgetLogic());
|
||||||
|
Get.lazyPut(() => BaseLogic(), fenix: true);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -41,10 +42,10 @@ sealed class ChickenPages {
|
|||||||
page: () => RolePage(),
|
page: () => RolePage(),
|
||||||
binding: BindingsBuilder(() {
|
binding: BindingsBuilder(() {
|
||||||
Get.lazyPut(() => RoleLogic());
|
Get.lazyPut(() => RoleLogic());
|
||||||
|
Get.lazyPut(() => BaseLogic(), fenix: true);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
//region Steward Pages
|
//region Steward Pages
|
||||||
GetPage(
|
GetPage(
|
||||||
name: ChickenRoutes.initSteward,
|
name: ChickenRoutes.initSteward,
|
||||||
@@ -53,6 +54,7 @@ sealed class ChickenPages {
|
|||||||
bindings: [
|
bindings: [
|
||||||
GlobalBinding(),
|
GlobalBinding(),
|
||||||
BindingsBuilder(() {
|
BindingsBuilder(() {
|
||||||
|
Get.lazyPut(() => BaseLogic(), fenix: true);
|
||||||
Get.lazyPut(() => StewardRootLogic());
|
Get.lazyPut(() => StewardRootLogic());
|
||||||
Get.lazyPut(() => HomeLogic());
|
Get.lazyPut(() => HomeLogic());
|
||||||
Get.lazyPut(() => BuyLogic());
|
Get.lazyPut(() => BuyLogic());
|
||||||
@@ -67,6 +69,7 @@ sealed class ChickenPages {
|
|||||||
page: () => HomePage(),
|
page: () => HomePage(),
|
||||||
middlewares: [AuthMiddleware()],
|
middlewares: [AuthMiddleware()],
|
||||||
binding: BindingsBuilder(() {
|
binding: BindingsBuilder(() {
|
||||||
|
|
||||||
Get.put(HomeLogic());
|
Get.put(HomeLogic());
|
||||||
Get.lazyPut(() => BaseLogic());
|
Get.lazyPut(() => BaseLogic());
|
||||||
}),
|
}),
|
||||||
@@ -160,7 +163,6 @@ sealed class ChickenPages {
|
|||||||
Get.lazyPut(() => PoultryActionLogic());
|
Get.lazyPut(() => PoultryActionLogic());
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
|
|
||||||
),
|
),
|
||||||
|
|
||||||
GetPage(
|
GetPage(
|
||||||
@@ -169,7 +171,6 @@ sealed class ChickenPages {
|
|||||||
middlewares: [AuthMiddleware()],
|
middlewares: [AuthMiddleware()],
|
||||||
binding: BindingsBuilder(() {
|
binding: BindingsBuilder(() {
|
||||||
Get.lazyPut(() => InspectionPoultryScienceLogic());
|
Get.lazyPut(() => InspectionPoultryScienceLogic());
|
||||||
|
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
@@ -207,7 +208,7 @@ sealed class ChickenPages {
|
|||||||
binding: BindingsBuilder(() {
|
binding: BindingsBuilder(() {
|
||||||
Get.lazyPut(() => GenocideLogic());
|
Get.lazyPut(() => GenocideLogic());
|
||||||
Get.lazyPut(() => PoultryScienceRootLogic());
|
Get.lazyPut(() => PoultryScienceRootLogic());
|
||||||
Get.lazyPut(() => KillingRegistrationLogic(),fenix: true);
|
Get.lazyPut(() => KillingRegistrationLogic(), fenix: true);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ RAppBar chickenAppBar({
|
|||||||
onNewsTap: onNewsTap,
|
onNewsTap: onNewsTap,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
children: [
|
children: [
|
||||||
Text('رصدطیور', style: AppFonts.yekan16Bold),
|
const SizedBox(width: 6),
|
||||||
|
Text('رصدطیور', style: AppFonts.yekan16Bold.copyWith(color: Colors.white)),
|
||||||
const SizedBox(width: 6),
|
const SizedBox(width: 6),
|
||||||
Assets.vec.chickenSvg.svg(height: 24, width: 24),
|
Assets.vec.chickenSvg.svg(height: 24, width: 24),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:rasadyar_chicken/presentation/widget/app_bar.dart';
|
|||||||
import 'package:rasadyar_chicken/presentation/widget/base_page/back_ground.dart';
|
import 'package:rasadyar_chicken/presentation/widget/base_page/back_ground.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
class ChickenBasePage extends GetView<BaseLogic> {
|
class ChickenBasePage extends StatefulWidget {
|
||||||
const ChickenBasePage({
|
const ChickenBasePage({
|
||||||
super.key,
|
super.key,
|
||||||
this.hasBack = true,
|
this.hasBack = true,
|
||||||
@@ -28,21 +28,22 @@ class ChickenBasePage extends GetView<BaseLogic> {
|
|||||||
this.floatingActionButton,
|
this.floatingActionButton,
|
||||||
this.filteringWidget,
|
this.filteringWidget,
|
||||||
this.backGroundWidget,
|
this.backGroundWidget,
|
||||||
}) : assert(
|
this.isFullScreen = false,
|
||||||
(routes != null) || routesWidget != null,
|
this.onPopScopTaped,
|
||||||
'Either routes or routesWidget must be provided.',
|
});
|
||||||
);
|
|
||||||
|
|
||||||
//AppBar properties`
|
//AppBar properties`
|
||||||
final bool hasBack;
|
final bool hasBack;
|
||||||
final bool hasFilter;
|
final bool hasFilter;
|
||||||
final bool hasSearch;
|
final bool hasSearch;
|
||||||
final bool isBase;
|
final bool isBase;
|
||||||
|
final bool isFullScreen;
|
||||||
final bool hasNotification;
|
final bool hasNotification;
|
||||||
final bool hasNews;
|
final bool hasNews;
|
||||||
final int? backId;
|
final int? backId;
|
||||||
|
|
||||||
final VoidCallback? onBackTap;
|
final VoidCallback? onBackTap;
|
||||||
|
final VoidCallback? onPopScopTaped;
|
||||||
final VoidCallback? onFilterTap;
|
final VoidCallback? onFilterTap;
|
||||||
final VoidCallback? onSearchTap;
|
final VoidCallback? onSearchTap;
|
||||||
final VoidCallback? onNewsTap;
|
final VoidCallback? onNewsTap;
|
||||||
@@ -61,13 +62,44 @@ class ChickenBasePage extends GetView<BaseLogic> {
|
|||||||
|
|
||||||
final BackGroundWidget? backGroundWidget;
|
final BackGroundWidget? backGroundWidget;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<ChickenBasePage> createState() => _ChickenBasePageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ChickenBasePageState extends State<ChickenBasePage> {
|
||||||
|
int? _lastBackId;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_lastBackId = widget.backId;
|
||||||
|
tLog(_lastBackId);
|
||||||
|
tLog(widget.backId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didChangeDependencies() {
|
||||||
|
fLog('didChangeDependencies');
|
||||||
|
fLog(_lastBackId);
|
||||||
|
fLog(widget.backId);
|
||||||
|
super.didChangeDependencies();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didUpdateWidget(covariant ChickenBasePage oldWidget) {
|
||||||
|
dLog('didUpdateWidget');
|
||||||
|
dLog(_lastBackId);
|
||||||
|
dLog(widget.backId);
|
||||||
|
super.didUpdateWidget(oldWidget);
|
||||||
|
}
|
||||||
|
|
||||||
void _onFilterTap() {
|
void _onFilterTap() {
|
||||||
if (hasFilter && filteringWidget != null) {
|
if (widget.hasFilter && widget.filteringWidget != null) {
|
||||||
final currentRoute = ModalRoute.of(Get.context!);
|
final currentRoute = ModalRoute.of(Get.context!);
|
||||||
if (currentRoute?.isCurrent != true) return;
|
if (currentRoute?.isCurrent != true) return;
|
||||||
|
|
||||||
Get.bottomSheet(
|
Get.bottomSheet(
|
||||||
filteringWidget!,
|
widget.filteringWidget!,
|
||||||
isScrollControlled: true,
|
isScrollControlled: true,
|
||||||
isDismissible: true,
|
isDismissible: true,
|
||||||
enableDrag: true,
|
enableDrag: true,
|
||||||
@@ -77,28 +109,60 @@ class ChickenBasePage extends GetView<BaseLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BasePage(
|
return PopScope(
|
||||||
routes: routes,
|
canPop: false,
|
||||||
routesWidget: routesWidget,
|
onPopInvokedWithResult: (didPop, result) {
|
||||||
widgets: widgets,
|
iLog('PopScope onPopInvokedWithResult:==> ${widget.backId}');
|
||||||
child: child,
|
iLog('PopScope onPopInvokedWithResult:==> $_lastBackId}');
|
||||||
scrollable: scrollable,
|
iLog('PopScope onPopInvokedWithResult:==> ${widget.onPopScopTaped}');
|
||||||
floatingActionButtonLocation: floatingActionButtonLocation,
|
iLog('PopScope onPopInvokedWithResult:==> ${widget.onBackTap}');
|
||||||
floatingActionButton: floatingActionButton,
|
// چک کردن و مدیریت برگشت با backId
|
||||||
backGroundWidget: backGroundWidget ?? chickenBackground(),
|
if (widget.backId != null) {
|
||||||
appBar: chickenAppBar(
|
final navigatorState = Get.nestedKey(widget.backId!)?.currentState;
|
||||||
isBase: isBase,
|
if (navigatorState != null && navigatorState.canPop()) {
|
||||||
hasBack: isBase ? false : hasBack,
|
Get.back(id: widget.backId!); // پاپ با استفاده از backId
|
||||||
onBackTap: onBackTap,
|
} else {
|
||||||
onNewsTap: onNewsTap,
|
// اگر هیچ صفحهای برای پاپ موجود نیست
|
||||||
hasFilter: hasFilter,
|
if (widget.onPopScopTaped != null) {
|
||||||
hasSearch: hasSearch,
|
widget.onPopScopTaped!();
|
||||||
hasNews: hasNews,
|
} else {
|
||||||
hasNotification: hasNotification,
|
Get.back();
|
||||||
backId: backId,
|
}
|
||||||
onNotificationTap: onNotificationTap,
|
}
|
||||||
onFilterTap: hasFilter ? _onFilterTap : null,
|
} else {
|
||||||
onSearchTap: hasSearch ? controller.toggleSearch : null,
|
// اگر backId نداشته باشد
|
||||||
|
if (widget.onPopScopTaped != null) {
|
||||||
|
widget.onPopScopTaped!();
|
||||||
|
} else {
|
||||||
|
Get.back();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: BasePage(
|
||||||
|
routes: widget.routes,
|
||||||
|
routesWidget: widget.routesWidget,
|
||||||
|
widgets: widget.widgets,
|
||||||
|
child: widget.child,
|
||||||
|
scrollable: widget.scrollable,
|
||||||
|
floatingActionButtonLocation: widget.floatingActionButtonLocation,
|
||||||
|
floatingActionButton: widget.floatingActionButton,
|
||||||
|
backGroundWidget: widget.backGroundWidget ?? chickenBackground(),
|
||||||
|
appBar: widget.isFullScreen
|
||||||
|
? null
|
||||||
|
: chickenAppBar(
|
||||||
|
isBase: widget.isBase,
|
||||||
|
hasBack: widget.isBase ? false : widget.hasBack,
|
||||||
|
onNewsTap: widget.onNewsTap,
|
||||||
|
hasFilter: widget.hasFilter,
|
||||||
|
hasSearch: widget.hasSearch,
|
||||||
|
hasNews: widget.hasNews,
|
||||||
|
backId: widget.backId,
|
||||||
|
onBackTap: widget.onBackTap,
|
||||||
|
hasNotification: widget.hasNotification,
|
||||||
|
onNotificationTap: widget.onNotificationTap,
|
||||||
|
onFilterTap: widget.hasFilter ? _onFilterTap : null,
|
||||||
|
//onSearchTap: widget.hasSearch ? controller.toggleSearch : null,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ description: A starting point for Dart libraries or applications.
|
|||||||
version: 1.3.2+3
|
version: 1.3.2+3
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.9.0
|
sdk: ^3.9.2
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
description: This file stores settings for Dart & Flutter DevTools.
|
description: This file stores settings for Dart & Flutter DevTools.
|
||||||
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
||||||
extensions:
|
extensions:
|
||||||
|
- hive_ce: true
|
||||||
@@ -13,7 +13,9 @@ class BasePage extends GetView<BaseLogic> {
|
|||||||
this.floatingActionButton,
|
this.floatingActionButton,
|
||||||
this.appBar,
|
this.appBar,
|
||||||
this.backGroundWidget,
|
this.backGroundWidget,
|
||||||
}) ;
|
this.onPopScopTaped,
|
||||||
|
this.backId,
|
||||||
|
});
|
||||||
|
|
||||||
final List<String>? routes;
|
final List<String>? routes;
|
||||||
final Breadcrumb? routesWidget;
|
final Breadcrumb? routesWidget;
|
||||||
@@ -24,6 +26,8 @@ class BasePage extends GetView<BaseLogic> {
|
|||||||
final BackGroundWidget? backGroundWidget;
|
final BackGroundWidget? backGroundWidget;
|
||||||
final FloatingActionButtonLocation? floatingActionButtonLocation;
|
final FloatingActionButtonLocation? floatingActionButtonLocation;
|
||||||
final Widget? floatingActionButton;
|
final Widget? floatingActionButton;
|
||||||
|
final VoidCallback? onPopScopTaped;
|
||||||
|
final int? backId;
|
||||||
|
|
||||||
Widget _buildHeader() {
|
Widget _buildHeader() {
|
||||||
return Column(
|
return Column(
|
||||||
@@ -36,7 +40,11 @@ class BasePage extends GetView<BaseLogic> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBody() {
|
Widget _buildBody() {
|
||||||
final content = [_buildHeader(), if (child != null) Expanded(child: child!), ...?widgets];
|
final content = [
|
||||||
|
if (routes != null || routesWidget != null) _buildHeader(),
|
||||||
|
if (child != null) Expanded(child: child!),
|
||||||
|
...?widgets,
|
||||||
|
];
|
||||||
|
|
||||||
if (scrollable) {
|
if (scrollable) {
|
||||||
if (backGroundWidget != null) {
|
if (backGroundWidget != null) {
|
||||||
@@ -61,7 +69,7 @@ class BasePage extends GetView<BaseLogic> {
|
|||||||
if (backGroundWidget != null) {
|
if (backGroundWidget != null) {
|
||||||
return Stack(
|
return Stack(
|
||||||
children: [
|
children: [
|
||||||
?backGroundWidget,
|
Positioned.fill(child: backGroundWidget!),
|
||||||
Column(children: content),
|
Column(children: content),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -71,18 +79,12 @@ class BasePage extends GetView<BaseLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PopScope(
|
return Scaffold(
|
||||||
canPop: false,
|
backgroundColor: AppColor.bgLight,
|
||||||
onPopInvokedWithResult: (didPop, result) {
|
appBar: appBar,
|
||||||
if (!didPop) appBar?.onBackTap?.call();
|
body: _buildBody(),
|
||||||
},
|
floatingActionButtonLocation: floatingActionButtonLocation,
|
||||||
child: Scaffold(
|
floatingActionButton: floatingActionButton,
|
||||||
backgroundColor: AppColor.bgLight,
|
|
||||||
appBar: appBar,
|
|
||||||
body: _buildBody(),
|
|
||||||
floatingActionButtonLocation: floatingActionButtonLocation,
|
|
||||||
floatingActionButton: floatingActionButton,
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_core/presentation/common/assets.gen.dart';
|
|
||||||
|
import '../../../../core.dart';
|
||||||
|
|
||||||
class BackGroundWidget extends StatelessWidget {
|
class BackGroundWidget extends StatelessWidget {
|
||||||
const BackGroundWidget({
|
const BackGroundWidget({super.key, required this.gradient, required this.vecPath});
|
||||||
super.key,
|
|
||||||
required this.gradient,
|
|
||||||
required this.vecPath,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Gradient gradient;
|
final Gradient gradient;
|
||||||
final String vecPath;
|
final String vecPath;
|
||||||
@@ -14,10 +11,10 @@ class BackGroundWidget extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
|
width: Get.width,
|
||||||
|
height: Get.height,
|
||||||
decoration: BoxDecoration(gradient: gradient),
|
decoration: BoxDecoration(gradient: gradient),
|
||||||
child: SvgGenImage.vec(vecPath).svg(fit: BoxFit.cover),
|
child: SvgGenImage.vec(vecPath).svg(fit: BoxFit.cover),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
@@ -65,8 +67,7 @@ class RAppBar extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
children: [
|
children: [
|
||||||
if (children != null) ...children!,
|
if (children != null) ...children!,
|
||||||
|
|
||||||
if (hasNews || hasBack || hasSearch || hasNotification || hasFilter)
|
if (hasNews || hasBack || hasSearch || hasNotification || hasFilter) const Spacer(),
|
||||||
const Spacer(),
|
|
||||||
|
|
||||||
if (hasNews)
|
if (hasNews)
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
@@ -79,26 +80,23 @@ class RAppBar extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
if (hasNews) SizedBox(width: 8.w),
|
if (hasNews) SizedBox(width: 8.w),
|
||||||
|
|
||||||
if (hasNotification)
|
if (hasNotification)
|
||||||
Badge.count(
|
Badge.count(count: 2, child: Icon(CupertinoIcons.bell_fill, color: Colors.white)),
|
||||||
count: 2,
|
|
||||||
child: Icon(CupertinoIcons.bell_fill, color: Colors.white),
|
|
||||||
),
|
|
||||||
if (hasNotification) SizedBox(width: 8.w),
|
if (hasNotification) SizedBox(width: 8.w),
|
||||||
|
if (!isBase) ...{
|
||||||
if (hasFilter)
|
if (hasFilter)
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: onFilterTap,
|
onTap: onFilterTap,
|
||||||
child: Assets.vec.filterSvg.svg(
|
child: Assets.vec.filterSvg.svg(
|
||||||
width: 24.w,
|
width: 24.w,
|
||||||
height: 24.h,
|
height: 24.h,
|
||||||
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
if (hasBack) SizedBox(width: 8.w),
|
||||||
if (hasBack) SizedBox(width: 8.w),
|
|
||||||
|
|
||||||
if (hasSearch) SearchWidget(),
|
|
||||||
if (hasSearch) SizedBox(width: 8.w),
|
|
||||||
|
|
||||||
|
if (hasSearch) SearchWidget(),
|
||||||
|
if (hasSearch) SizedBox(width: 8.w),
|
||||||
|
},
|
||||||
if (hasBack)
|
if (hasBack)
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: onBackTap ?? () => Get.back(id: backId),
|
onTap: onBackTap ?? () => Get.back(id: backId),
|
||||||
@@ -120,8 +118,7 @@ class RAppBar extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Size get preferredSize =>
|
Size get preferredSize => Size.fromHeight(kToolbarHeight + (bottom?.preferredSize.height ?? 0));
|
||||||
Size.fromHeight(kToolbarHeight + (bottom?.preferredSize.height ?? 0));
|
|
||||||
|
|
||||||
MainAxisAlignment _getMainAxisAlignment() {
|
MainAxisAlignment _getMainAxisAlignment() {
|
||||||
if (centerTitle) {
|
if (centerTitle) {
|
||||||
@@ -173,21 +170,15 @@ class RAppBar2 extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
excludeHeaderSemantics: true,
|
excludeHeaderSemantics: true,
|
||||||
scrolledUnderElevation: 0,
|
scrolledUnderElevation: 0,
|
||||||
centerTitle: centerTitle,
|
centerTitle: centerTitle,
|
||||||
titleTextStyle:
|
titleTextStyle: titleTextStyle ?? AppFonts.yekan16.copyWith(color: Colors.white),
|
||||||
titleTextStyle ?? AppFonts.yekan16.copyWith(color: Colors.white),
|
|
||||||
title: Row(
|
title: Row(
|
||||||
children: [
|
children: [
|
||||||
if (leading != null) ...{
|
if (leading != null) ...{
|
||||||
Padding(padding: const EdgeInsets.only(right: 6), child: leading),
|
Padding(padding: const EdgeInsets.only(right: 6), child: leading),
|
||||||
},
|
},
|
||||||
if (title != null) ...[
|
if (title != null) ...[Text(title!), if (iconTitle != null) const SizedBox(width: 8)],
|
||||||
Text(title!),
|
|
||||||
if (iconTitle != null) const SizedBox(width: 8),
|
|
||||||
],
|
|
||||||
if (iconTitle != null) ...{const SizedBox(width: 8)},
|
if (iconTitle != null) ...{const SizedBox(width: 8)},
|
||||||
if (iconTitle != null) ...{
|
if (iconTitle != null) ...{SvgGenImage.vec(iconTitle!).svg(width: 24, height: 24)},
|
||||||
SvgGenImage.vec(iconTitle!).svg(width: 24, height: 24),
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
titleSpacing: 8,
|
titleSpacing: 8,
|
||||||
@@ -201,10 +192,7 @@ class RAppBar2 extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
child: Assets.vec.arrowLeftSvg.svg(
|
child: Assets.vec.arrowLeftSvg.svg(
|
||||||
width: 24.w,
|
width: 24.w,
|
||||||
height: 24.h,
|
height: 24.h,
|
||||||
colorFilter: ColorFilter.mode(
|
colorFilter: ColorFilter.mode(iconColor ?? Colors.white, BlendMode.srcIn),
|
||||||
iconColor ?? Colors.white,
|
|
||||||
BlendMode.srcIn,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -130,7 +130,9 @@ class InformationTag extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
height: (data.height ?? 82).h,
|
height: (data.height ?? 82).h,
|
||||||
decoration: BoxDecoration(borderRadius: BorderRadius.circular(8)),
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(color: const Color(0xFFA9A9A9) ,width:0.50),
|
||||||
|
borderRadius: BorderRadius.circular(8)),
|
||||||
clipBehavior: Clip.hardEdge,
|
clipBehavior: Clip.hardEdge,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@@ -2,23 +2,49 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
class LogoWidget extends StatelessWidget {
|
class LogoWidget extends StatelessWidget {
|
||||||
const LogoWidget({super.key, this.title});
|
const LogoWidget({
|
||||||
final String? title ;
|
super.key,
|
||||||
|
this.title,
|
||||||
|
this.height,
|
||||||
|
this.width,
|
||||||
|
this.vecPath,
|
||||||
|
this.svgPath,
|
||||||
|
this.imagePath,
|
||||||
|
this.titleStyle,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String? title;
|
||||||
|
final String? vecPath;
|
||||||
|
final String? svgPath;
|
||||||
|
final String? imagePath;
|
||||||
|
final num? width;
|
||||||
|
final num? height;
|
||||||
|
final TextStyle? titleStyle;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
Row(),
|
Row(),
|
||||||
Assets.images.innerSplash.image(
|
buildLogo(),
|
||||||
width: 120.w,
|
SizedBox(height: 8.h),
|
||||||
height: 120.h,
|
|
||||||
),
|
|
||||||
Text(
|
Text(
|
||||||
title??'سامانه رصدیار',
|
title ?? 'سامانه رصدیار',
|
||||||
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyNormal),
|
style:titleStyle?? AppFonts.yekan16.copyWith(color: AppColor.darkGreyNormal),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget buildLogo() {
|
||||||
|
if (vecPath != null) {
|
||||||
|
return SvgGenImage.vec(vecPath!).svg(width: width?.w ?? 120.w, height: height?.h ?? 120.h);
|
||||||
|
} else if (svgPath != null) {
|
||||||
|
return SvgGenImage(vecPath!).svg(width: width?.w ?? 120.w, height: height?.h ?? 120.h);
|
||||||
|
} else if (imagePath != null) {
|
||||||
|
return AssetGenImage(imagePath!).image(width: width?.w ?? 120.w, height: height?.h ?? 120.h);
|
||||||
|
} else {
|
||||||
|
return Assets.images.innerSplash.image(width: 120.w, height: 120.h);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -333,10 +333,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: device_preview_plus
|
name: device_preview_plus
|
||||||
sha256: "45f9154c3213e470df1aa54326757ccf3cc6fb1f04396bced6ad1a7bfc9d6400"
|
sha256: "2ebe9cf25ed46875c9c1b745d0438df9e4c49f7bcf9ea466c88efbcffcc73ab7"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.0"
|
version: "2.5.1"
|
||||||
dio:
|
dio:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -1852,4 +1852,4 @@ packages:
|
|||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.9.2 <4.0.0"
|
dart: ">=3.9.2 <4.0.0"
|
||||||
flutter: ">=3.35.3"
|
flutter: ">=3.35.4"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ publish_to: none
|
|||||||
version: 1.2.0+2
|
version: 1.2.0+2
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.9.0
|
sdk: ^3.9.2
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
description: This file stores settings for Dart & Flutter DevTools.
|
description: This file stores settings for Dart & Flutter DevTools.
|
||||||
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
||||||
extensions:
|
extensions:
|
||||||
|
- hive_ce: true
|
||||||
@@ -333,10 +333,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_preview_plus
|
name: device_preview_plus
|
||||||
sha256: "45f9154c3213e470df1aa54326757ccf3cc6fb1f04396bced6ad1a7bfc9d6400"
|
sha256: "2ebe9cf25ed46875c9c1b745d0438df9e4c49f7bcf9ea466c88efbcffcc73ab7"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.0"
|
version: "2.5.1"
|
||||||
dio:
|
dio:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1859,4 +1859,4 @@ packages:
|
|||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.9.2 <4.0.0"
|
dart: ">=3.9.2 <4.0.0"
|
||||||
flutter: ">=3.35.3"
|
flutter: ">=3.35.4"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ publish_to: 'none'
|
|||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.9.0
|
sdk: ^3.9.2
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
description: This file stores settings for Dart & Flutter DevTools.
|
description: This file stores settings for Dart & Flutter DevTools.
|
||||||
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
|
||||||
extensions:
|
extensions:
|
||||||
|
- hive_ce: true
|
||||||
@@ -5,7 +5,7 @@ publish_to: 'none'
|
|||||||
# repository: https://github.com/my_org/my_repo
|
# repository: https://github.com/my_org/my_repo
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.9.0
|
sdk: ^3.9.2
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
@@ -317,10 +317,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_preview_plus
|
name: device_preview_plus
|
||||||
sha256: "45f9154c3213e470df1aa54326757ccf3cc6fb1f04396bced6ad1a7bfc9d6400"
|
sha256: "2ebe9cf25ed46875c9c1b745d0438df9e4c49f7bcf9ea466c88efbcffcc73ab7"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.0"
|
version: "2.5.1"
|
||||||
dio:
|
dio:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1839,4 +1839,4 @@ packages:
|
|||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.9.2 <4.0.0"
|
dart: ">=3.9.2 <4.0.0"
|
||||||
flutter: ">=3.35.3"
|
flutter: ">=3.35.4"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ publish_to: 'none'
|
|||||||
version: 1.3.8+6
|
version: 1.3.8+6
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.9.0
|
sdk: ^3.9.2
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
|
|||||||
Reference in New Issue
Block a user