feat : map

This commit is contained in:
2025-04-09 17:05:38 +03:30
parent e83388670c
commit 0286725ac6
41 changed files with 1120 additions and 91 deletions

View File

@@ -11,70 +11,84 @@ class AppFonts {
static const FontWeight bold = FontWeight.w600;
static const double _height = 1.20;
static const TextStyle yekan61Regular = TextStyle(
static const TextStyle yekan61 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 61,
height: _height,
);
static const TextStyle yekan49Regular = TextStyle(
static const TextStyle yekan49 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 48,
height: _height,
);
static const TextStyle yekan39Regular = TextStyle(
static const TextStyle yekan39 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 39,
height: _height,
);
static const TextStyle yekan31Regular = TextStyle(
static const TextStyle yekan31 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 31,
height: _height,
);
static const TextStyle yekan25Regular = TextStyle(
static const TextStyle yekan25 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 25,
height: _height,
);
static const TextStyle yekan24Regular = TextStyle(
static const TextStyle yekan24 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 24,
height: _height,
);
static const TextStyle yekan20Regular = TextStyle(
static const TextStyle yekan20 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 20,
height: _height,
);
static const TextStyle yekan16Regular = TextStyle(
static const TextStyle yekan18 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 18,
height: _height,
);
static const TextStyle yekan16 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 16,
height: _height,
);
static const TextStyle yekan13Regular = TextStyle(
static const TextStyle yekan14 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 13,
height: _height,
);
static const TextStyle yekan10Regular = TextStyle(
static const TextStyle yekan13 = TextStyle(
fontFamily: yekan,
fontWeight: regular,
fontSize: 13,
height: _height,
);
static const TextStyle yekan10 = TextStyle(
// Rounded from 10.24
fontFamily: yekan,
fontWeight: regular,

View File

@@ -10,6 +10,7 @@ class Assets {
static const String iconsEdit = 'assets/icons/edit.svg';
static const String iconsFilter = 'assets/icons/filter.svg';
static const String iconsKey = 'assets/icons/key.svg';
static const String iconsMapMarker = 'assets/icons/map_marker.svg';
static const String iconsScan = 'assets/icons/scan.svg';
static const String iconsTrash = 'assets/icons/trash.svg';
static const String iconsUser = 'assets/icons/user.svg';

View File

@@ -1,15 +0,0 @@
import 'package:get/get.dart';
class AuthWithOtpLogic extends GetxController {
@override
void onReady() {
// TODO: implement onReady
super.onReady();
}
@override
void onClose() {
// TODO: implement onClose
super.onClose();
}
}

View File

@@ -1,15 +0,0 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'logic.dart';
class AuthWithOtpPage extends StatelessWidget {
const AuthWithOtpPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final AuthWithOtpLogic logic = Get.put(AuthWithOtpLogic());
return Container();
}
}

View File

@@ -1,17 +1,60 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:rasadyar_app/presentation/widget/captcha/captcha_widget.dart';
enum AuthType { useAndPass, otp }
enum AuthStatus { init }
enum OtpStatus { init, sent, verified, reSend }
class AuthWithUseAndPassLogic extends GetxController {
Rx<GlobalKey<FormState>> formKey = GlobalKey<FormState>().obs;
Rx<GlobalKey<FormState>> formKeyOtp = GlobalKey<FormState>().obs;
Rx<GlobalKey<FormState>> formKeySentOtp = GlobalKey<FormState>().obs;
Rx<TextEditingController> phoneNumberController = TextEditingController().obs;
Rx<TextEditingController> passwordController = TextEditingController().obs;
Rx<TextEditingController> phoneOtpNumberController =
TextEditingController().obs;
Rx<TextEditingController> otpCodeController = TextEditingController().obs;
CaptchaController captchaController = CaptchaController();
CaptchaController captchaOtpController = CaptchaController();
RxnString phoneNumber = RxnString(null);
RxnString password = RxnString(null);
RxBool isOnError = false.obs;
RxBool hidePassword = true.obs;
Rx<AuthType> authType = AuthType.useAndPass.obs;
Rx<AuthStatus> authStatus = AuthStatus.init.obs;
Rx<OtpStatus> otpStatus = OtpStatus.init.obs;
RxInt secondsRemaining = 120.obs;
Timer? _timer;
void startTimer() {
_timer?.cancel();
secondsRemaining.value = 120;
_timer = Timer.periodic(const Duration(seconds: 1), (timer) {
if (secondsRemaining.value > 0) {
secondsRemaining.value--;
} else {
timer.cancel();
}
});
}
void stopTimer() {
_timer?.cancel();
}
String get timeFormatted {
final minutes = secondsRemaining.value ~/ 60;
final seconds = secondsRemaining.value % 60;
return '${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
}
@override
void onReady() {
@@ -21,7 +64,7 @@ class AuthWithUseAndPassLogic extends GetxController {
@override
void onClose() {
// TODO: implement onClose
_timer?.cancel();
super.onClose();
}
}

View File

@@ -1,4 +1,5 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:logger/logger.dart';
@@ -9,25 +10,89 @@ import 'package:rasadyar_app/presentation/common/assets.dart';
import 'package:rasadyar_app/presentation/widget/buttons/elevated.dart';
import 'package:rasadyar_app/presentation/widget/captcha/captcha_widget.dart';
import 'package:rasadyar_app/presentation/widget/vec_widget.dart';
import 'package:supervision/supervision.dart';
import 'logic.dart';
class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
AuthWithUseAndPassPage({super.key});
const AuthWithUseAndPassPage({super.key});
@override
Widget build(BuildContext context) {
final AuthWithUseAndPassLogic logic = Get.put(AuthWithUseAndPassLogic());
return Scaffold(
body: SingleChildScrollView(
child: Column(
children: [SizedBox(height: 80), logoWidget(), loginForm()],
children: [
SizedBox(height: 80),
logoWidget(),
ObxValue((types) {
switch (types.value) {
case AuthType.otp:
return otpForm();
case AuthType.useAndPass:
return useAndPassFrom();
}
}, controller.authType),
SizedBox(height: 50),
RichText(
text: TextSpan(
children: [
TextSpan(
text: 'مطالعه بیانیه ',
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDark,
),
),
TextSpan(
recognizer: TapGestureRecognizer()..onTap = () {},
text: 'حریم خصوصی',
style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
),
],
),
),
SizedBox(height: 18),
ObxValue((types) {
return RichText(
text: TextSpan(
children: [
TextSpan(
recognizer:
TapGestureRecognizer()
..onTap = () {
if (controller.authType.value == AuthType.otp) {
controller.authType.value = AuthType.useAndPass;
if (controller.otpStatus.value !=
OtpStatus.init) {
controller.otpStatus.value = OtpStatus.init;
}
} else {
controller.authType.value = AuthType.otp;
}
},
text:
controller.authType.value == AuthType.otp
? 'ورود با رمز ثابت'
: 'ورود با رمز یکبار مصرف',
style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
),
],
),
);
}, controller.authType),
],
),
),
);
}
Widget loginForm() {
Widget useAndPassFrom() {
return ObxValue((data) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 50),
@@ -44,8 +109,8 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
gapPadding: 11,
),
labelText: 'شماره موبایل',
labelStyle: AppFonts.yekan13Regular,
errorStyle: AppFonts.yekan13Regular.copyWith(
labelStyle: AppFonts.yekan13,
errorStyle: AppFonts.yekan13.copyWith(
color: AppColor.redNormal,
),
@@ -79,6 +144,7 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
if (controller.isOnError.value) {
controller.isOnError.value = !controller.isOnError.value;
data.value.currentState?.reset();
data.refresh();
phoneController.value.text = value;
}
@@ -93,7 +159,7 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
}
return null;
},
style: AppFonts.yekan13Regular,
style: AppFonts.yekan13,
);
}, controller.phoneNumberController),
@@ -109,8 +175,8 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
gapPadding: 11,
),
labelText: 'رمز عبور',
labelStyle: AppFonts.yekan13Regular,
errorStyle: AppFonts.yekan13Regular.copyWith(
labelStyle: AppFonts.yekan13,
errorStyle: AppFonts.yekan13.copyWith(
color: AppColor.redNormal,
),
@@ -157,10 +223,9 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
}
return null;
},
style: AppFonts.yekan13Regular,
style: AppFonts.yekan13,
);
}, controller.passwordController),
SizedBox(height: 26),
CaptchaWidget(controller: controller.captchaController),
@@ -173,7 +238,7 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
di.get<Logger>().t(controller.captchaController.validate());
if (data.value.currentState?.validate() == true &&
controller.captchaController.validate()) {
print("==============>ssakldjaskljdklasjd");
Get.toNamed(SupervisionRoutes.supervision);
}
},
width: Get.width,
@@ -186,6 +251,257 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
}, controller.formKey);
}
Widget otpForm() {
return ObxValue((status) {
switch (status.value) {
case OtpStatus.init:
return sendCodeForm();
case OtpStatus.sent:
case OtpStatus.verified:
case OtpStatus.reSend:
return confirmCodeForm();
}
}, controller.otpStatus);
}
Widget sendCodeForm() {
return ObxValue((data) {
return Form(
key: data.value,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 50),
child: Column(
children: [
SizedBox(height: 26),
ObxValue((phoneController) {
return TextFormField(
controller: phoneController.value,
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
gapPadding: 11,
),
labelText: 'شماره موبایل',
labelStyle: AppFonts.yekan13,
errorStyle: AppFonts.yekan13.copyWith(
color: AppColor.redNormal,
),
prefixIconConstraints: BoxConstraints(
maxHeight: 40,
minHeight: 40,
maxWidth: 40,
minWidth: 40,
),
prefixIcon: Padding(
padding: const EdgeInsets.fromLTRB(0, 8, 6, 8),
child: vecWidget(Assets.vecCallSvg),
),
suffix:
phoneController.value.text.trim().isNotEmpty
? clearButton(() {
phoneController.value.clear();
phoneController.refresh();
})
: null,
counterText: '',
),
keyboardType: TextInputType.numberWithOptions(
decimal: false,
signed: false,
),
maxLines: 1,
maxLength: 11,
onChanged: (value) {
if (controller.isOnError.value) {
controller.isOnError.value = !controller.isOnError.value;
data.value.currentState?.reset();
data.refresh();
phoneController.value.text = value;
}
phoneController.refresh();
},
textInputAction: TextInputAction.next,
validator: (value) {
if (value == null) {
return '⚠️ شماره موبایل را وارد کنید';
} else if (value.length < 11) {
return '⚠️ شماره موبایل باید 11 رقم باشد';
}
return null;
},
style: AppFonts.yekan13,
);
}, controller.phoneOtpNumberController),
SizedBox(height: 26),
CaptchaWidget(controller: controller.captchaOtpController),
SizedBox(height: 23),
RElevated(
text: 'ارسال رمز یکبار مصرف',
onPressed: () {
if (data.value.currentState?.validate() == true &&
controller.captchaOtpController.validate()) {
controller.otpStatus.value = OtpStatus.sent;
controller.startTimer();
}
},
width: Get.width,
height: 48,
),
],
),
),
);
}, controller.formKeyOtp);
}
Widget confirmCodeForm() {
return ObxValue((data) {
return Form(
key: data.value,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 50),
child: Column(
children: [
SizedBox(height: 26),
ObxValue((passwordController) {
return TextFormField(
controller: passwordController.value,
obscureText: controller.hidePassword.value,
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
gapPadding: 11,
),
labelText: 'رمز عبور',
labelStyle: AppFonts.yekan13,
errorStyle: AppFonts.yekan13.copyWith(
color: AppColor.redNormal,
),
prefixIconConstraints: BoxConstraints(
maxHeight: 34,
minHeight: 34,
maxWidth: 34,
minWidth: 34,
),
prefixIcon: Padding(
padding: const EdgeInsets.fromLTRB(0, 8, 8, 8),
child: vecWidget(Assets.vecKeySvg),
),
suffix:
passwordController.value.text.trim().isNotEmpty
? GestureDetector(
onTap: () {
controller.hidePassword.value =
!controller.hidePassword.value;
},
child: Icon(
controller.hidePassword.value
? CupertinoIcons.eye
: CupertinoIcons.eye_slash,
),
)
: null,
counterText: '',
),
textInputAction: TextInputAction.done,
keyboardType: TextInputType.visiblePassword,
maxLines: 1,
onChanged: (value) {
if (controller.isOnError.value) {
controller.isOnError.value = !controller.isOnError.value;
data.value.currentState?.reset();
passwordController.value.text = value;
}
passwordController.refresh();
},
validator: (value) {
if (value == null || value.isEmpty) {
return '⚠️ رمز عبور را وارد کنید'; // "Please enter the password"
}
return null;
},
style: AppFonts.yekan13,
);
}, controller.passwordController),
SizedBox(height: 23),
ObxValue((timer) {
if (timer.value == 0) {
return TextButton(
onPressed: () {
controller.otpStatus.value = OtpStatus.reSend;
controller.startTimer();
},
child: Text(
style: AppFonts.yekan13.copyWith(
color: AppColor.blueNormal,
),
'ارسال مجدد کد یکبار مصرف',
),
);
} else {
return Text(
'اعتبار رمز ارسال شده ${controller.timeFormatted}',
style: AppFonts.yekan13,
);
}
}, controller.secondsRemaining),
RichText(
text: TextSpan(
children: [
TextSpan(
text: ' کد ارسال شده به شماره ',
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDark,
),
),
TextSpan(
text: controller.phoneOtpNumberController.value.text,
style: AppFonts.yekan13Bold.copyWith(
color: AppColor.darkGreyDark,
),
),
TextSpan(
recognizer:
TapGestureRecognizer()
..onTap = () {
controller.otpStatus.value = OtpStatus.init;
controller.captchaOtpController.clear();
},
text: ' ویرایش',
style: AppFonts.yekan14.copyWith(
color: AppColor.blueNormal,
),
),
],
),
),
SizedBox(height: 23),
RElevated(
text: 'ورود',
onPressed: () {
if (controller.formKeyOtp.value.currentState?.validate() ==
true &&
controller.captchaOtpController.validate()) {}
},
width: Get.width,
height: 48,
),
],
),
),
);
}, controller.formKeySentOtp);
}
Widget logoWidget() {
return Column(
children: [
@@ -193,9 +509,7 @@ class AuthWithUseAndPassPage extends GetView<AuthWithUseAndPassLogic> {
Image.asset(Assets.imagesInnerSplash, width: 120, height: 120),
Text(
'سامانه رصدیار',
style: AppFonts.yekan16Regular.copyWith(
color: AppColor.darkGreyNormal,
),
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyNormal),
),
],
);

View File

@@ -1,6 +1,7 @@
import 'package:flutter/animation.dart';
import 'package:get/get.dart';
import 'package:rasadyar_app/presentation/routes/app_pages.dart';
import 'package:supervision/supervision.dart';
class SplashLogic extends GetxController with GetTickerProviderStateMixin {
late final AnimationController scaleController;
@@ -54,7 +55,7 @@ class SplashLogic extends GetxController with GetTickerProviderStateMixin {
void onReady() {
super.onReady();
Future.delayed(const Duration(seconds: 1), () {
Get.offAllNamed(AppPaths.authWithUserAndPass);
Get.offAllNamed(SupervisionRoutes.supervision);
});
}

View File

@@ -68,7 +68,7 @@ class _SystemDesignPageState extends State<SystemDesignPage> {
return ListTile(
title: Text(
"inputs",
style: AppFonts.yekan20Regular.copyWith(color: Colors.red),
style: AppFonts.yekan20.copyWith(color: Colors.red),
),
);
},
@@ -79,11 +79,11 @@ class _SystemDesignPageState extends State<SystemDesignPage> {
children: [
RTextField(
hintText: 'حجم کشتار را در روز به قطعه وارد کنید',
hintStyle: AppFonts.yekan13Regular,
hintStyle: AppFonts.yekan13,
),
RTextField(
label: 'تلفن مرغداری',
labelStyle: AppFonts.yekan10Regular,
labelStyle: AppFonts.yekan10,
),
],
),
@@ -98,7 +98,7 @@ class _SystemDesignPageState extends State<SystemDesignPage> {
return ListTile(
title: Text(
"tab",
style: AppFonts.yekan20Regular.copyWith(color: Colors.red),
style: AppFonts.yekan20.copyWith(color: Colors.red),
),
);
},
@@ -119,7 +119,7 @@ class _SystemDesignPageState extends State<SystemDesignPage> {
return ListTile(
title: Text(
"پیجینیشن",
style: AppFonts.yekan20Regular.copyWith(color: Colors.red),
style: AppFonts.yekan20.copyWith(color: Colors.red),
),
);
},
@@ -134,7 +134,7 @@ class _SystemDesignPageState extends State<SystemDesignPage> {
return ListTile(
title: Text(
"Outlined Fab ",
style: AppFonts.yekan20Regular.copyWith(color: Colors.green),
style: AppFonts.yekan20.copyWith(color: Colors.green),
),
);
},
@@ -166,7 +166,7 @@ class _SystemDesignPageState extends State<SystemDesignPage> {
return ListTile(
title: Text(
"Fab",
style: AppFonts.yekan20Regular.copyWith(color: Colors.green),
style: AppFonts.yekan20.copyWith(color: Colors.green),
),
);
},
@@ -234,7 +234,7 @@ class _SystemDesignPageState extends State<SystemDesignPage> {
return ListTile(
title: Text(
"دکمه ها",
style: AppFonts.yekan20Regular.copyWith(color: Colors.green),
style: AppFonts.yekan20.copyWith(color: Colors.green),
),
);
},

View File

@@ -1,10 +1,9 @@
import 'package:get/get.dart';
import 'package:rasadyar_app/presentation/pages/auth/auth_with_otp/logic.dart';
import 'package:rasadyar_app/presentation/pages/auth/auth_with_otp/view.dart';
import 'package:rasadyar_app/presentation/pages/auth/auth_with_use_and_pass/logic.dart';
import 'package:rasadyar_app/presentation/pages/auth/auth_with_use_and_pass/view.dart';
import 'package:rasadyar_app/presentation/pages/splash/logic.dart';
import 'package:rasadyar_app/presentation/pages/splash/view.dart';
import 'package:supervision/supervision.dart';
part 'app_paths.dart';
@@ -19,15 +18,12 @@ sealed class AppPages {
page: () => SplashPage(),
binding: BindingsBuilder.put(() => SplashLogic()),
),
GetPage(
name: AppPaths.authWithOtp,
page: () => AuthWithOtpPage(),
binding: BindingsBuilder.put(() => AuthWithOtpLogic()),
),
GetPage(
name: AppPaths.authWithUserAndPass,
page: () => AuthWithUseAndPassPage(),
binding: BindingsBuilder.put(() => AuthWithUseAndPassLogic()),
),
...SupervisionPages.pages,
];
}

View File

@@ -48,7 +48,7 @@ class _RElevatedState extends State<RElevated> {
),
fixedSize: Size(widget.width, widget.height),
padding: EdgeInsets.zero,
textStyle: widget.textStyle ?? AppFonts.yekan24Regular,
textStyle: widget.textStyle ?? AppFonts.yekan24,
),
child: Text(widget.text),
);

View File

@@ -92,7 +92,7 @@ class _ROutlinedElevatedState extends State<ROutlinedElevated> {
padding: WidgetStatePropertyAll(EdgeInsets.zero),
textStyle: WidgetStatePropertyAll(
widget.textStyle ??
AppFonts.yekan24Regular.copyWith(color: AppColor.blueNormal),
AppFonts.yekan24.copyWith(color: AppColor.blueNormal),
),
),
child: Text(widget.text),

View File

@@ -7,12 +7,12 @@ class RTextButton extends StatefulWidget {
super.key,
required this.text,
required this.onPressed,
foregroundColor,
backgroundColor,
borderColor,
disabledBackgroundColor,
radius,
textStyle,
this.foregroundColor,
this.backgroundColor,
this.borderColor,
this.disabledBackgroundColor,
this.radius,
this.textStyle,
this.width = 150.0,
this.height = 56.0,
});
@@ -67,7 +67,7 @@ class _RTextButtonState extends State<RTextButton> {
padding: WidgetStatePropertyAll(EdgeInsets.zero),
textStyle: WidgetStatePropertyAll(
widget.textStyle ??
AppFonts.yekan24Regular.copyWith(color: AppColor.blueNormal),
AppFonts.yekan24.copyWith(color: AppColor.blueNormal),
),
),
onPressed:widget.onPressed,

View File

@@ -177,7 +177,7 @@ class _CaptchaWidgetState extends State<CaptchaWidget> {
),
Text(
widget.controller.captchaCode.toString(),
style: AppFonts.yekan24Regular,
style: AppFonts.yekan24,
),
],
),
@@ -203,8 +203,8 @@ class _CaptchaWidgetState extends State<CaptchaWidget> {
gapPadding: 11,
),
labelText: 'کد امنیتی',
labelStyle: AppFonts.yekan13Regular,
errorStyle: AppFonts.yekan10Regular.copyWith(
labelStyle: AppFonts.yekan13,
errorStyle: AppFonts.yekan10.copyWith(
color: AppColor.redNormal,
fontSize: 8,
),
@@ -249,7 +249,7 @@ class _CaptchaWidgetState extends State<CaptchaWidget> {
}
return null;
},
style: AppFonts.yekan13Regular,
style: AppFonts.yekan13,
),
),
),

View File

@@ -45,7 +45,7 @@ class _PaginationFromUntilState extends State<PaginationFromUntil> {
'$current از $total',
textAlign: TextAlign.center,
textDirection: TextDirection.rtl,
style: AppFonts.yekan16Regular.copyWith(
style: AppFonts.yekan16.copyWith(
color: AppColor.blueNormal,
),
),

View File

@@ -64,7 +64,7 @@ class _RShowMoreState extends State<RShowMore>
child: Text(
_toggled ? 'کمتر' : 'مشاهده بیشتر',
key: ValueKey(_toggled),
style: AppFonts.yekan10Regular.copyWith(color: AppColor.blueNormal),
style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal),
),
),
SizedBox(height: 50,)

View File

@@ -70,14 +70,14 @@ class _CupertinoSegmentedControlDemoState2
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50)
),
child: Text('لاشه', style: AppFonts.yekan13Regular),
child: Text('لاشه', style: AppFonts.yekan13),
),
1: Container(
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50)
),
child: Text('زنده', style: AppFonts.yekan13Regular),
child: Text('زنده', style: AppFonts.yekan13),
),
};