add details

This commit is contained in:
Rajshinde046
2024-03-20 12:34:48 +05:30
parent 03d5d3dc1a
commit fce750568d
12 changed files with 728 additions and 83 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -3,6 +3,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:traderscircuit/Utils/text.dart';
class CommonAppbar extends StatelessWidget implements PreferredSizeWidget {
@override
@@ -10,6 +11,7 @@ class CommonAppbar extends StatelessWidget implements PreferredSizeWidget {
const CommonAppbar(
{Key? key,
required this.titleTxt,
this.suffixIcon,
this.showLeading = true,
this.customBack,
this.backPageName = '',
@@ -17,6 +19,7 @@ class CommonAppbar extends StatelessWidget implements PreferredSizeWidget {
: super(key: key);
final String titleTxt;
final String? suffixIcon;
final bool? showLeading;
final bool? customBack;
final String? backPageName;
@@ -50,20 +53,35 @@ class CommonAppbar extends StatelessWidget implements PreferredSizeWidget {
centerTitle: false,
titlePadding: EdgeInsets.all(0),
title: Padding(
padding: EdgeInsets.only(left: 16.w),
padding: EdgeInsets.only(left: 16.w, right: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
titleTxt,
style: TextStyle(
color: Colors.white,
fontSize: 24.sp,
fontWeight: FontWeight.w500,
fontFamily: 'manrope'),
maxLines: 2,
softWrap: true,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
titleTxt,
style: TextStyle(
color: Colors.white,
fontSize: 24.sp,
fontWeight: FontWeight.w500,
fontFamily: 'manrope'),
maxLines: 2,
softWrap: true,
),
Text(
suffixIcon == null ? "" : "skip",
style: TextStyle(
color: Colors.white,
fontSize: 18.sp,
fontWeight: FontWeight.w400,
fontFamily: 'manrope'),
maxLines: 2,
softWrap: true,
),
],
),
// newTextfield(
// FontWeight.w400, 0)

View File

@@ -18,6 +18,8 @@ class CustomTextFormField extends StatefulWidget {
this.texttype,
this.inputFormatters,
this.onInput,
this.onTap,
this.suffixIcon,
}) : super(key: key);
final dynamic validator;
@@ -34,6 +36,8 @@ class CustomTextFormField extends StatefulWidget {
final TextInputType? texttype;
final dynamic inputFormatters;
final Function(String)? onInput;
final VoidCallback? onTap;
final Widget? suffixIcon;
@override
State<CustomTextFormField> createState() => _CustomTextFormFieldState();
@@ -80,6 +84,7 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
cursorColor: Colors.red,
initialValue: widget.value,
readOnly: widget.readonly,
onTap: widget.onTap,
enabled: widget.enabled,
enableInteractiveSelection: false,
maxLines: widget.maxlines,
@@ -117,7 +122,9 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
],
),
)
: null,
: widget.suffixIcon == null
? null
: widget.suffixIcon!,
border: InputBorder.none,
contentPadding: EdgeInsets.symmetric(horizontal: 10),
),

View File

@@ -77,3 +77,14 @@ Widget text14W300(String text) {
fontFamily: 'manrope'),
);
}
Widget text14W400(String text) {
return Text(
text,
style: TextStyle(
fontSize: 14.sp,
color: Colors.white,
fontWeight: FontWeight.w400,
fontFamily: 'manrope'),
);
}

View File

@@ -16,4 +16,10 @@ class RouteName {
static const String faceid = '/faceid';
static const String fingerprint = '/fingerprint';
static const String pin = '/pin';
//add details
static const String adddetails = '/adddetails';
//kyc
static const String kyc = '/kyc';
}

View File

@@ -1,6 +1,8 @@
import 'package:get/get.dart';
import 'package:traderscircuit/Utils/Common/noInternet.dart';
import 'package:traderscircuit/resources/routes/route_name.dart';
import 'package:traderscircuit/view/login/AddDetails.dart';
import 'package:traderscircuit/view/login/Kyc.dart';
import 'package:traderscircuit/view/login/LoginScreen.dart';
import 'package:traderscircuit/view/login/VerifyOtp.dart';
import 'package:traderscircuit/view/onBoarding/splashScreen.dart';
@@ -64,5 +66,17 @@ class AppRoutes {
name: RouteName.pin,
page: () => const Pin(),
),
//add details
GetPage(
name: RouteName.adddetails,
page: () => const AddDetails(),
),
//kyc
GetPage(
name: RouteName.kyc,
page: () => const Kyc(),
),
];
}

View File

@@ -0,0 +1,213 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart';
import 'package:traderscircuit/Utils/Common/commonBotton.dart';
import 'package:traderscircuit/Utils/text.dart';
import 'package:traderscircuit/resources/routes/route_name.dart';
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
class AddDetails extends StatefulWidget {
const AddDetails({super.key});
@override
State<AddDetails> createState() => _AddDetailsState();
}
class _AddDetailsState extends State<AddDetails> {
TextEditingController pincode = TextEditingController();
TextEditingController dobcontroller = TextEditingController();
Color primaryColor = Colors.transparent.withOpacity(0.2);
Color secondaryColor = Colors.grey.shade800;
bool isSwitched = false;
void _toggleSwitch(bool value) {
setState(() {
isSwitched = value;
});
}
DateTime timebackPressed = DateTime.now();
Future<void> _selectDate(BuildContext context) async {
final DateTime? picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1900),
lastDate: DateTime.now(),
builder: (context, child) {
return Theme(
data: Theme.of(context).copyWith(
colorScheme: ColorScheme.light(
surface: Colors.black,
onSurface: Colors.white,
primary: Color(0xff9A0000),
onPrimary: Colors.white,
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: Colors.white,
),
),
),
child: child!);
});
if (picked != null && picked != DateTime.now()) {
setState(() {
dobcontroller.text = "${picked.toLocal()}".split(' ')[0];
final birthDate = DateTime(
picked.year,
picked.month,
picked.day,
);
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CommonAppbar(titleTxt: "Add Details"),
backgroundColor: Colors.black,
extendBody: true,
body: Stack(
children: [
CommonBlurLeft(),
CommonBlurRight(),
Stack(
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
child: ListView(
physics: BouncingScrollPhysics(),
// mainAxisAlignment: MainAxisAlignment.start,
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
text18W400("Full Name"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Email Address"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Phone Number"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Date Of Birth"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(
suffixIcon: Icon(
Icons.calendar_month_outlined,
color: Colors.white,
),
readonly: true,
onTap: () {
_selectDate(context);
},
),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("City"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 40.h,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Image.asset(
"assets/images/png/whatsapp.png",
height: 34.h,
width: 34.w,
),
SizedBox(
width: 10.w,
),
text18W600("Get Updates on WhatsApp"),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Switch(
value: isSwitched,
onChanged: _toggleSwitch,
activeTrackColor: Colors.green,
activeColor: Colors.white,
inactiveTrackColor: Colors.white,
inactiveThumbColor: Colors.black,
),
],
),
],
),
SizedBox(
height: 70.h,
),
CommonBtn(
text: "Next",
onTap: () {
Get.toNamed(RouteName.kyc);
},
),
SizedBox(
height: 10.h,
),
],
),
),
],
),
],
),
);
}
}

388
lib/view/login/Kyc.dart Normal file
View File

@@ -0,0 +1,388 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:traderscircuit/Utils/Common/CommonAppbar.dart';
import 'package:traderscircuit/Utils/Common/CustomTextFormField.dart';
import 'package:traderscircuit/Utils/Common/commonBotton.dart';
import 'package:traderscircuit/Utils/text.dart';
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
class Kyc extends StatefulWidget {
const Kyc({super.key});
@override
State<Kyc> createState() => _KycState();
}
class _KycState extends State<Kyc> {
TextEditingController pincode = TextEditingController();
TextEditingController dobcontroller = TextEditingController();
Color primaryColor = Colors.transparent.withOpacity(0.2);
Color secondaryColor = Colors.grey.shade800;
bool isSwitched = false;
void _toggleSwitch(bool value) {
setState(() {
isSwitched = value;
});
}
DateTime timebackPressed = DateTime.now();
Future<void> _selectDate(BuildContext context) async {
final DateTime? picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1900),
lastDate: DateTime.now(),
builder: (context, child) {
return Theme(
data: Theme.of(context).copyWith(
colorScheme: ColorScheme.light(
surface: Colors.black,
onSurface: Colors.white,
primary: Color(0xff9A0000),
onPrimary: Colors.white,
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: Colors.white,
),
),
),
child: child!);
});
if (picked != null && picked != DateTime.now()) {
setState(() {
dobcontroller.text = "${picked.toLocal()}".split(' ')[0];
final birthDate = DateTime(
picked.year,
picked.month,
picked.day,
);
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CommonAppbar(
titleTxt: "KYC",
suffixIcon: "skip",
),
backgroundColor: Colors.black,
extendBody: true,
body: Stack(
children: [
CommonBlurLeft(),
CommonBlurRight(),
Stack(
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
child: ListView(
physics: BouncingScrollPhysics(),
// mainAxisAlignment: MainAxisAlignment.start,
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
text18W400("Full Name"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Email Address"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Phone Number"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Date Of Birth"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(
suffixIcon: Icon(
Icons.calendar_month_outlined,
color: Colors.white,
),
readonly: true,
onTap: () {
_selectDate(context);
},
),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("City"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Upload pan card image"),
],
),
SizedBox(
height: 15.h,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GlassmorphicContainer(
width: 170.w,
height: 105.h,
borderRadius: 8,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFffffff).withOpacity(0.1),
Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: [
0.1,
1,
]),
border: 0.8,
blur: 10,
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xff9A0000).withOpacity(0.5),
Color(0xFFffffff).withOpacity(0.5),
],
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.file_upload_outlined,
size: 42,
color: Colors.white,
),
SizedBox(
height: 10.h,
),
text14W400("Front Side")
],
),
),
),
GlassmorphicContainer(
width: 170.w,
height: 105.h,
borderRadius: 8,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFffffff).withOpacity(0.1),
Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: [
0.1,
1,
]),
border: 0.8,
blur: 10,
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xff9A0000).withOpacity(0.5),
Color(0xFFffffff).withOpacity(0.5),
],
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.file_upload_outlined,
size: 42,
color: Colors.white,
),
SizedBox(
height: 10.h,
),
text14W400("Back Side")
],
),
),
)
],
),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Aadhaar Number"),
],
),
SizedBox(
height: 15.h,
),
CustomTextFormField(),
SizedBox(
height: 30.h,
),
Row(
children: [
text18W400("Upload Aadhaar card image"),
],
),
SizedBox(
height: 15.h,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GlassmorphicContainer(
width: 170.w,
height: 105.h,
borderRadius: 8,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFffffff).withOpacity(0.1),
Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: [
0.1,
1,
]),
border: 0.8,
blur: 10,
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xff9A0000).withOpacity(0.5),
Color(0xFFffffff).withOpacity(0.5),
],
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.file_upload_outlined,
size: 42,
color: Colors.white,
),
SizedBox(
height: 10.h,
),
text14W400("Front Side")
],
),
),
),
GlassmorphicContainer(
width: 170.w,
height: 105.h,
borderRadius: 8,
linearGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFffffff).withOpacity(0.1),
Color(0xFFFFFFFF).withOpacity(0.05),
],
stops: [
0.1,
1,
]),
border: 0.8,
blur: 10,
borderGradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xff9A0000).withOpacity(0.5),
Color(0xFFffffff).withOpacity(0.5),
],
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.file_upload_outlined,
size: 42,
color: Colors.white,
),
SizedBox(
height: 10.h,
),
text14W400("Back Side")
],
),
),
)
],
),
SizedBox(
height: 70.h,
),
CommonBtn(text: "Next"),
SizedBox(
height: 10.h,
),
],
),
),
],
),
],
),
);
}
}

View File

@@ -37,9 +37,6 @@ class _FaceidState extends State<Faceid> {
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 10.h,
),
text18W400("Quickly set up Face ID for secure access."),
SizedBox(
height: 180.h,
@@ -56,7 +53,7 @@ class _FaceidState extends State<Faceid> {
CommonBtn(
text: "Setup",
onTap: () {
Get.toNamed(RouteName.loginscreen);
Get.toNamed(RouteName.adddetails);
},
)
],

View File

@@ -37,9 +37,6 @@ class _FingerprintState extends State<Fingerprint> {
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 10.h,
),
text18W400("Quickly set up Fingerprint for secure access."),
SizedBox(
height: 180.h,
@@ -56,7 +53,7 @@ class _FingerprintState extends State<Fingerprint> {
CommonBtn(
text: "Setup",
onTap: () {
Get.toNamed(RouteName.loginscreen);
Get.toNamed(RouteName.adddetails);
},
)
],

View File

@@ -22,7 +22,7 @@ class _PinState extends State<Pin> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CommonAppbar(titleTxt: "Verify your number"),
appBar: CommonAppbar(titleTxt: "Secure your access"),
backgroundColor: Colors.black,
extendBody: true,
body: Stack(
@@ -39,75 +39,67 @@ class _PinState extends State<Pin> {
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 10.h,
),
text18W400("Quickly set up pin for secure access."),
SizedBox(
height: 180.h,
height: 60.h,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
child: PinCodeTextField(
showCursor: true,
cursorColor: Colors.white,
textStyle:
TextStyle(fontSize: 18.sp, color: Colors.white),
errorTextSpace: 22,
validator: (value) {
if (value != null && value.isEmpty) {
return "Please Enter verification code";
} else if (value != null && value.length < 4) {
return "OTP length should be atleast 4";
}
return null;
},
keyboardType: TextInputType.number,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
length: 4,
obscureText: false,
animationType: AnimationType.fade,
pinTheme: PinTheme(
selectedFillColor: primaryColor,
inactiveFillColor: primaryColor,
activeFillColor: primaryColor,
inactiveColor: secondaryColor,
activeColor: secondaryColor,
selectedColor: secondaryColor,
shape: PinCodeFieldShape.box,
borderRadius: BorderRadius.circular(15),
fieldHeight: 60.h,
fieldWidth: 60.w,
),
animationDuration: Duration(milliseconds: 300),
enableActiveFill: true,
controller: pin,
onCompleted: (v) {
print("Completed");
},
onChanged: (value) {
print(value);
setState(() {});
},
beforeTextPaste: (text) {
print("Allowing to paste $text");
return true;
},
appContext: context,
),
Container(
child: PinCodeTextField(
showCursor: true,
cursorColor: Colors.white,
textStyle:
TextStyle(fontSize: 18.sp, color: Colors.white),
errorTextSpace: 22,
validator: (value) {
if (value != null && value.isEmpty) {
return "Please Enter verification code";
} else if (value != null && value.length < 4) {
return "OTP length should be atleast 4";
}
return null;
},
keyboardType: TextInputType.number,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
length: 4,
obscureText: false,
animationType: AnimationType.fade,
pinTheme: PinTheme(
selectedFillColor: primaryColor,
inactiveFillColor: primaryColor,
activeFillColor: primaryColor,
inactiveColor: secondaryColor,
activeColor: secondaryColor,
selectedColor: secondaryColor,
shape: PinCodeFieldShape.box,
borderRadius: BorderRadius.circular(15),
fieldHeight: 60.h,
fieldWidth: 60.w,
),
],
animationDuration: Duration(milliseconds: 300),
enableActiveFill: true,
controller: pin,
onCompleted: (v) {
print("Completed");
},
onChanged: (value) {
print(value);
setState(() {});
},
beforeTextPaste: (text) {
print("Allowing to paste $text");
return true;
},
appContext: context,
),
),
SizedBox(
height: 180.h,
height: 200.h,
),
CommonBtn(
text: "Setup",
onTap: () {
Get.toNamed(RouteName.loginscreen);
Get.toNamed(RouteName.adddetails);
},
)
],

View File

@@ -22,7 +22,7 @@ class _SecureAccessState extends State<SecureAccess> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CommonAppbar(titleTxt: "Secure ypur access"),
appBar: CommonAppbar(titleTxt: "Secure your access"),
backgroundColor: Colors.black,
extendBody: true,
body: Stack(
@@ -183,7 +183,9 @@ class _SecureAccessState extends State<SecureAccess> {
height: 20.h,
),
InkWell(
onTap: () {},
onTap: () {
Get.toNamed(RouteName.pin);
},
child: GlassmorphicContainer(
width: double.infinity,
height: 80.h,
@@ -250,9 +252,9 @@ class _SecureAccessState extends State<SecureAccess> {
height: 250.h,
),
CommonBtn(
text: "Verify OTP",
text: "Setup Later",
onTap: () {
Get.toNamed(RouteName.loginscreen);
Get.toNamed(RouteName.adddetails);
},
)
],