Merge branch 'main' into splash

This commit is contained in:
Raj
2024-03-22 16:59:10 +05:30
committed by GitHub
31 changed files with 2272 additions and 664 deletions

View File

@@ -7,7 +7,7 @@ import 'package:traderscircuit/Utils/text.dart';
class CommonAppbar extends StatelessWidget implements PreferredSizeWidget {
@override
Size get preferredSize => Size.fromHeight(height);
Size get preferredSize => Size.fromHeight(height!);
const CommonAppbar(
{Key? key,
required this.titleTxt,
@@ -27,11 +27,11 @@ class CommonAppbar extends StatelessWidget implements PreferredSizeWidget {
final String? backPageName;
final Widget? customActionWidget;
final VoidCallback? onCustomActionPressed;
final double height;
final double? height;
@override
Widget build(BuildContext context) {
return PreferredSize(
preferredSize: Size.fromHeight(130),
preferredSize: Size.fromHeight(height ?? 130),
child: AppBar(
scrolledUnderElevation: 0.0,
backgroundColor: Colors.black,

View File

@@ -75,9 +75,9 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) {
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.4),
color: Colors.grey.withOpacity(0.2),
spreadRadius: 15,
blurRadius: 10,
blurRadius: 5,
offset: Offset(0, 10),
),
],

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:glassmorphism/glassmorphism.dart';
class CustomTextFormField extends StatefulWidget {
@@ -145,3 +146,156 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
);
}
}
class CustomTextFormField1 extends StatefulWidget {
const CustomTextFormField1({
Key? key,
this.validator,
this.textEditingController,
this.hintText,
this.leadingIcon,
this.prefixIconColor = const Color(0xFF737373),
this.isInputPassword = false,
this.validatorText,
this.value,
this.readonly = false,
this.enabled = true,
this.maxlines = 1,
this.texttype,
this.inputFormatters,
this.onInput,
this.onTap,
this.suffixIcon,
}) : super(key: key);
final dynamic validator;
final TextEditingController? textEditingController;
final String? hintText;
final Widget? leadingIcon;
final Color prefixIconColor;
final bool isInputPassword;
final String? validatorText;
final String? value;
final bool readonly;
final bool enabled;
final int maxlines;
final TextInputType? texttype;
final dynamic inputFormatters;
final Function(String)? onInput;
final VoidCallback? onTap;
final Widget? suffixIcon;
@override
State<CustomTextFormField1> createState() => _CustomTextFormField1State();
}
class _CustomTextFormField1State extends State<CustomTextFormField1> {
late bool obscureText;
@override
void initState() {
super.initState();
obscureText = widget.isInputPassword;
}
@override
Widget build(BuildContext context) {
return GlassmorphicContainer(
width: double.infinity,
height: 50,
borderRadius: 8,
blur: 10,
alignment: Alignment.bottomCenter,
border: 0.8,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFffffff).withOpacity(0.1),
Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: [
0.1,
1,
]),
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xff3A3A3A),
Color(0xFF3A3A3A),
],
),
child: TextFormField(
cursorColor: Colors.red,
initialValue: widget.value,
readOnly: widget.readonly,
onTap: widget.onTap,
enabled: widget.enabled,
enableInteractiveSelection: false,
maxLines: widget.maxlines,
autovalidateMode: AutovalidateMode.onUserInteraction,
obscureText: obscureText,
controller: widget.textEditingController,
decoration: InputDecoration(
hintText: widget.hintText,
prefixIconColor: widget.prefixIconColor,
hintStyle: TextStyle(
fontSize: 16.sp,
color: Colors.white,
fontWeight: FontWeight.w400,
fontFamily: 'manrope'),
// ignore: prefer_null_aware_operators
prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!,
suffixIcon: widget.isInputPassword
? GestureDetector(
onTap: () => setState(() => obscureText = !obscureText),
child: obscureText
? const Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: EdgeInsets.only(right: 20.0),
child: Icon(Icons.remove_red_eye),
),
],
)
: const Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: EdgeInsets.only(right: 20.0),
child: Icon(
Icons.remove_red_eye_outlined,
color: Color(0xFF959595),
),
),
],
),
)
: widget.suffixIcon == null
? null
: widget.suffixIcon!,
border: InputBorder.none,
contentPadding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
),
style: TextStyle(color: Colors.white),
keyboardType: widget.texttype,
// validator: widget.validator ??
// (value) {
// if (value == null || value.isEmpty) {
// return "Empty value";
// }
// return null;
// },
inputFormatters: widget.inputFormatters,
onChanged: (value) {
widget.onInput?.call(value);
},
),
);
}
}

View File

@@ -0,0 +1,36 @@
import 'package:image_cropper/image_cropper.dart';
import 'package:image_picker/image_picker.dart';
class ImagePickerMethod {
Future<String> getImage(ImageSource imgSource) async {
final ImagePicker picker = ImagePicker();
final XFile? pickedImg = await picker.pickImage(source: imgSource);
if (pickedImg != null) {
final croppedImg = await ImageCropper().cropImage(
sourcePath: pickedImg.path,
aspectRatio: const CropAspectRatio(ratioX: 1, ratioY: 1),
compressFormat: ImageCompressFormat.jpg,
maxHeight: 512,
maxWidth: 512,
uiSettings: [
IOSUiSettings(
rotateButtonsHidden: true,
rotateClockwiseButtonHidden: true,
)
],
compressQuality: 100,
aspectRatioPresets: [
CropAspectRatioPreset.square,
],
);
if (croppedImg != null) {
return croppedImg.path;
} else {
return "";
}
} else {
return "";
}
}
}

View File

@@ -1,5 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:traderscircuit/Utils/Common/sized_box.dart';
import 'package:traderscircuit/Utils/text.dart';
Widget CommonBtn({void Function()? onTap, required String text}) {
return InkWell(
@@ -23,3 +26,117 @@ Widget CommonBtn({void Function()? onTap, required String text}) {
),
));
}
Widget CommonYesNoBtn({
void Function()? yesonTap,
void Function()? noonTap,
}) {
return Row(
children: [
GestureDetector(
onTap: yesonTap,
child: GlassmorphicContainer(
width: 170.w,
height: 50.h,
borderRadius: 8,
blur: 10,
alignment: Alignment.center,
border: 0.9,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Colors.white.withOpacity(0.1),
Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: [
0.1,
1,
],
),
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color.fromRGBO(70, 5, 1, 0.8),
Color.fromRGBO(102, 102, 102, 0.8),
],
),
child: Center(
child: text18W500('Yes'),
),
),
),
sizedBoxWidth(10.w),
GestureDetector(
onTap: noonTap,
child: Container(
height: 50.h,
width: 170.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.r),
border: Border.all(color: Color(0xFF9A0000), width: 1.w),
color: Color(0xFF6C0000)),
child: Center(child: text18W500('No')),
),
)
],
);
}
// InkWell(
// onTap: onTap,
// child: Container(
// width: double.infinity,
// height: 50.h,
// decoration: BoxDecoration(
// color: Color(0xff9A0000), borderRadius: BorderRadius.circular(5)),
// child: Center(
// child: Text(
// text,
// textAlign: TextAlign.center,
// style: TextStyle(
// color: Colors.white,
// fontSize: 20.sp,
// fontFamily: 'Cambria',
// fontWeight: FontWeight.w400,
// ),
// ),
// ),
// ));
Widget kycBtn({
void Function()? onTap,
required String text,
required Color bgClr,
required Color borderClr,
}) {
return InkWell(
onTap: onTap,
child: Container(
width: 191,
height: 50,
decoration: ShapeDecoration(
color: bgClr,
shape: RoundedRectangleBorder(
side: BorderSide(
width: 1,
color: borderClr,
),
borderRadius: BorderRadius.circular(8),
),
),
child: Center(
child: Text(
text,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 20.sp,
fontFamily: 'Cambria',
fontWeight: FontWeight.w400,
),
),
),
),
);
}

View File

@@ -0,0 +1,192 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../text.dart';
class CustomDropDownWidget extends StatefulWidget {
const CustomDropDownWidget(
{super.key, required this.header, required this.listData});
final String header;
final List<String> listData;
@override
State<CustomDropDownWidget> createState() => _CustomDropDownWidgetState();
}
class _CustomDropDownWidgetState extends State<CustomDropDownWidget> {
RxBool onDropTap = false.obs;
RxString selectedValue = "".obs;
@override
Widget build(BuildContext context) {
return Obx(
() => SizedBox(
width: Get.width,
// height: onDropTap.value ? 350 : 55,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
InkWell(
onTap: () {
onDropTap.value = !onDropTap.value;
},
child: SizedBox(
width: 398,
height: 55,
child: Stack(
children: [
Positioned(
left: 398,
top: 55,
child: Opacity(
opacity: 0.50,
child: Transform(
transform: Matrix4.identity()
..translate(0.0, 0.0)
..rotateZ(-3.14),
child: Container(
width: 398,
height: 55,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(0.98, -0.21),
end: const Alignment(-0.98, 0.21),
colors: [
Colors.white
.withOpacity(0.03999999910593033),
Colors.white
.withOpacity(0.05999999865889549)
],
),
border: Border(
top: onDropTap.value
? const BorderSide(
width: 0, color: Color(0xFF393939))
: const BorderSide(
width: 0.50,
color: Color(0xFF393939)),
bottom: const BorderSide(
width: 0.50, color: Color(0xFF393939)),
left: const BorderSide(
width: 0.50,
color: Color(0xFF393939),
),
right: const BorderSide(
width: 0.50,
color: Color(0xFF393939),
),
)),
),
),
),
),
Positioned(
left: 14,
top: 16,
child: Text(
selectedValue.isNotEmpty
? selectedValue.value
: widget.header,
style: const TextStyle(
color: Color(0xFFADADAD),
fontSize: 16,
fontFamily: 'Manrope',
fontWeight: FontWeight.w400,
height: 0,
),
),
),
Positioned(
right: 14,
top: 16,
child: onDropTap.value
? const Icon(
Icons.keyboard_arrow_up_rounded,
color: Colors.white,
)
: const Icon(
Icons.keyboard_arrow_down_rounded,
color: Colors.white,
)),
],
),
),
),
!onDropTap.value
? const SizedBox()
: Opacity(
opacity: 0.50,
child: Container(
width: Get.width,
// height: 216,
decoration: ShapeDecoration(
gradient: LinearGradient(
begin: const Alignment(0.98, -0.21),
end: const Alignment(-0.98, 0.21),
colors: [
Colors.white.withOpacity(0.03999999910593033),
Colors.white.withOpacity(0.05999999865889549)
],
),
shape: const RoundedRectangleBorder(
side:
BorderSide(width: 0.50, color: Color(0xFF393939)),
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(8),
bottomRight: Radius.circular(8),
),
),
),
child: ListView.builder(
shrinkWrap: true,
itemCount: widget.listData.length,
itemBuilder: (context, index) {
return InkWell(
onTap: () {
selectedValue.value = widget.listData[index];
onDropTap.value = !onDropTap.value;
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Container(
margin: EdgeInsets.only(
left: 14,
top: index == 0 ? 16 : 0,
bottom: index ==
widget.listData.length - 1
? 16
: 0),
child:
text16W400(widget.listData[index])),
index == widget.listData.length - 1
? const SizedBox()
: Container(
width: Get.width,
margin: const EdgeInsets.only(
top: 16, bottom: 16),
decoration: const ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 0.60,
strokeAlign: BorderSide
.strokeAlignCenter,
color: Color(0xFF393939),
),
),
),
),
],
),
);
}),
),
),
],
),
),
);
}
}

View File

@@ -12,6 +12,18 @@ Widget text20W400(String text) {
);
}
Widget text20W400_center(String text) {
return Text(
text,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20.sp,
color: Colors.white,
fontWeight: FontWeight.w400,
fontFamily: 'manrope'),
);
}
Widget text18W800(String text) {
return Text(
text,
@@ -56,6 +68,19 @@ Widget text18W400(String text) {
);
}
Widget text24W500(String text) {
return Text(
text,
style: TextStyle(
color: Colors.white,
fontSize: 24.sp,
fontWeight: FontWeight.w500,
fontFamily: 'manrope'),
maxLines: 2,
softWrap: true,
);
}
Widget text16W400(String text) {
return Text(
text,
@@ -154,6 +179,7 @@ Widget text12W400(String text) {
fontFamily: 'manrope'),
);
}
Widget text12W500(String text) {
return Text(
text,
@@ -231,8 +257,8 @@ Widget text14W300(String text) {
);
}
Widget text14W400(String text) { return Text(
Widget text14W400(String text) {
return Text(
text,
style: TextStyle(
fontSize: 14.sp,
@@ -243,13 +269,11 @@ Widget text14W400(String text) { return Text(
}
Widget text14W500(String text) {
return Text(
text,
style: TextStyle(
fontSize: 14.sp,
color: Colors.white,
fontWeight: FontWeight.w500,
fontFamily: 'manrope'),
);
@@ -261,13 +285,11 @@ Widget text16W400_DADADA(String text) {
style: TextStyle(
fontSize: 16.sp,
color: Color(0xFFDADADA),
fontWeight: FontWeight.w400,
fontFamily: 'manrope'),
);
}
Widget text14W400_979797(String text) {
return Text(
text,
@@ -313,4 +335,3 @@ Widget text14W500_black(String text) {
fontFamily: 'manrope'),
);
}