597 lines
26 KiB
Dart
597 lines
26 KiB
Dart
import 'dart:io';
|
|
import 'dart:ui';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:get/get.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/resources/routes/route_name.dart';
|
|
import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
|
|
|
|
import '../../controller/kyc_controller.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;
|
|
|
|
KYCController kycController = Get.put(KYCController());
|
|
TextEditingController panController = TextEditingController();
|
|
TextEditingController addharController = TextEditingController();
|
|
|
|
// 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: const 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 Obx(
|
|
() => Scaffold(
|
|
appBar: CommonAppbar(
|
|
titleTxt: "KYC",
|
|
customActionWidget: text16W400(""),
|
|
),
|
|
backgroundColor: Colors.black,
|
|
extendBody: true,
|
|
body: Stack(
|
|
children: [
|
|
const CommonBlurLeft(),
|
|
const CommonBlurRight(),
|
|
Stack(
|
|
children: [
|
|
Padding(
|
|
padding:
|
|
const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
|
child: ListView(
|
|
physics: const BouncingScrollPhysics(),
|
|
// mainAxisAlignment: MainAxisAlignment.start,
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
// CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]),
|
|
// 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(),
|
|
Row(
|
|
children: [
|
|
text18W500("Step 1 : Personal Information"),
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 30.h,
|
|
),
|
|
Row(
|
|
children: [
|
|
text18W400("Upload pan card image"),
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 15.h,
|
|
),
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
InkWell(
|
|
onTap: () {
|
|
if (kycController.panFrontImage.isEmpty) {
|
|
Get.toNamed(RouteName.kycImage, arguments: {
|
|
"type": "pan front",
|
|
});
|
|
}
|
|
},
|
|
child: GlassmorphicContainer(
|
|
width: 170.w,
|
|
height: 105.h,
|
|
borderRadius: 8,
|
|
linearGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xFFffffff).withOpacity(0.1),
|
|
const Color(0xFFFFFFFF).withOpacity(0.05),
|
|
],
|
|
stops: const [
|
|
0.1,
|
|
1,
|
|
]),
|
|
border: 0.8,
|
|
blur: 10,
|
|
borderGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xff9A0000).withOpacity(0.5),
|
|
const Color(0xFFffffff).withOpacity(0.5),
|
|
],
|
|
),
|
|
child: (kycController.panFrontImage.isNotEmpty)
|
|
? Stack(
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(
|
|
vertical: 20, horizontal: 40),
|
|
child: Image(
|
|
image: FileImage(
|
|
File(
|
|
kycController
|
|
.panFrontImage.value,
|
|
),
|
|
),
|
|
fit: BoxFit.cover,
|
|
width: Get.width,
|
|
height: 50.h,
|
|
),
|
|
),
|
|
Positioned(
|
|
top: 6,
|
|
right: 10,
|
|
child: InkWell(
|
|
onTap: () {
|
|
kycController
|
|
.panFrontImage.value = "";
|
|
},
|
|
child: SvgPicture.asset(
|
|
"assets/images/svg/cancel.svg",
|
|
width: 18,
|
|
height: 18,
|
|
),
|
|
),
|
|
)
|
|
],
|
|
)
|
|
: Center(
|
|
child: Column(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment.center,
|
|
children: [
|
|
const Icon(
|
|
Icons.file_upload_outlined,
|
|
size: 42,
|
|
color: Colors.white,
|
|
),
|
|
SizedBox(
|
|
height: 10.h,
|
|
),
|
|
text14W400("Front Side")
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
InkWell(
|
|
onTap: () {
|
|
if (kycController.panBackImage.isEmpty) {
|
|
Get.toNamed(RouteName.kycImage, arguments: {
|
|
"type": "pan back",
|
|
});
|
|
}
|
|
},
|
|
child: GlassmorphicContainer(
|
|
width: 170.w,
|
|
height: 105.h,
|
|
borderRadius: 8,
|
|
linearGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xFFffffff).withOpacity(0.1),
|
|
const Color(0xFFFFFFFF).withOpacity(0.05),
|
|
],
|
|
stops: const [
|
|
0.1,
|
|
1,
|
|
]),
|
|
border: 0.8,
|
|
blur: 10,
|
|
borderGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xff9A0000).withOpacity(0.5),
|
|
const Color(0xFFffffff).withOpacity(0.5),
|
|
],
|
|
),
|
|
child: (kycController.panBackImage.isNotEmpty)
|
|
? Stack(
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(
|
|
vertical: 20, horizontal: 40),
|
|
child: Image(
|
|
image: FileImage(
|
|
File(
|
|
kycController
|
|
.panBackImage.value,
|
|
),
|
|
),
|
|
fit: BoxFit.cover,
|
|
width: Get.width,
|
|
height: 50.h,
|
|
),
|
|
),
|
|
Positioned(
|
|
top: 6,
|
|
right: 10,
|
|
child: InkWell(
|
|
onTap: () {
|
|
kycController.panBackImage.value =
|
|
"";
|
|
},
|
|
child: SvgPicture.asset(
|
|
"assets/images/svg/cancel.svg",
|
|
width: 18,
|
|
height: 18,
|
|
),
|
|
),
|
|
)
|
|
],
|
|
)
|
|
: Center(
|
|
child: Column(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment.center,
|
|
children: [
|
|
const Icon(
|
|
Icons.file_upload_outlined,
|
|
size: 42,
|
|
color: Colors.white,
|
|
),
|
|
SizedBox(
|
|
height: 10.h,
|
|
),
|
|
text14W400("Back Side")
|
|
],
|
|
),
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 30.h,
|
|
),
|
|
Row(
|
|
children: [
|
|
text18W400("Pan Card"),
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 15.h,
|
|
),
|
|
const CustomTextFormField(),
|
|
SizedBox(
|
|
height: 15.h,
|
|
),
|
|
Row(
|
|
children: [
|
|
text18W400("Aadhar Number"),
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 15.h,
|
|
),
|
|
const CustomTextFormField(),
|
|
SizedBox(
|
|
height: 30.h,
|
|
),
|
|
Row(
|
|
children: [
|
|
text18W400("Upload Aadhar card image"),
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 15.h,
|
|
),
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
InkWell(
|
|
onTap: () {
|
|
if (kycController.aadharFrontImage.isEmpty) {
|
|
Get.toNamed(RouteName.kycImage, arguments: {
|
|
"type": "aadhar front",
|
|
});
|
|
}
|
|
},
|
|
child: GlassmorphicContainer(
|
|
width: 170.w,
|
|
height: 105.h,
|
|
borderRadius: 8,
|
|
linearGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xFFffffff).withOpacity(0.1),
|
|
const Color(0xFFFFFFFF).withOpacity(0.05),
|
|
],
|
|
stops: const [
|
|
0.1,
|
|
1,
|
|
]),
|
|
border: 0.8,
|
|
blur: 10,
|
|
borderGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xff9A0000).withOpacity(0.5),
|
|
const Color(0xFFffffff).withOpacity(0.5),
|
|
],
|
|
),
|
|
child: (kycController.aadharFrontImage.isNotEmpty)
|
|
? Stack(
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(
|
|
vertical: 20, horizontal: 40),
|
|
child: Image(
|
|
image: FileImage(
|
|
File(
|
|
kycController
|
|
.aadharFrontImage.value,
|
|
),
|
|
),
|
|
fit: BoxFit.cover,
|
|
width: Get.width,
|
|
height: 50.h,
|
|
),
|
|
),
|
|
Positioned(
|
|
top: 6,
|
|
right: 10,
|
|
child: InkWell(
|
|
onTap: () {
|
|
kycController
|
|
.aadharFrontImage.value = "";
|
|
},
|
|
child: SvgPicture.asset(
|
|
"assets/images/svg/cancel.svg",
|
|
width: 18,
|
|
height: 18,
|
|
),
|
|
),
|
|
)
|
|
],
|
|
)
|
|
: Center(
|
|
child: Column(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment.center,
|
|
children: [
|
|
const Icon(
|
|
Icons.file_upload_outlined,
|
|
size: 42,
|
|
color: Colors.white,
|
|
),
|
|
SizedBox(
|
|
height: 10.h,
|
|
),
|
|
text14W400("Front Side")
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
InkWell(
|
|
onTap: () {
|
|
if (kycController.aadharBackImage.isEmpty) {
|
|
Get.toNamed(RouteName.kycImage, arguments: {
|
|
"type": "aadhar back",
|
|
});
|
|
}
|
|
},
|
|
child: GlassmorphicContainer(
|
|
width: 170.w,
|
|
height: 105.h,
|
|
borderRadius: 8,
|
|
linearGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xFFffffff).withOpacity(0.1),
|
|
const Color(0xFFFFFFFF).withOpacity(0.05),
|
|
],
|
|
stops: const [
|
|
0.1,
|
|
1,
|
|
]),
|
|
border: 0.8,
|
|
blur: 10,
|
|
borderGradient: LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
const Color(0xff9A0000).withOpacity(0.5),
|
|
const Color(0xFFffffff).withOpacity(0.5),
|
|
],
|
|
),
|
|
child: (kycController.aadharBackImage.isNotEmpty)
|
|
? Stack(
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(
|
|
vertical: 20, horizontal: 40),
|
|
child: Image(
|
|
image: FileImage(
|
|
File(
|
|
kycController
|
|
.aadharBackImage.value,
|
|
),
|
|
),
|
|
fit: BoxFit.cover,
|
|
width: Get.width,
|
|
height: 50.h,
|
|
),
|
|
),
|
|
Positioned(
|
|
top: 6,
|
|
right: 10,
|
|
child: InkWell(
|
|
onTap: () {
|
|
kycController
|
|
.aadharBackImage.value = "";
|
|
},
|
|
child: SvgPicture.asset(
|
|
"assets/images/svg/cancel.svg",
|
|
width: 18,
|
|
height: 18,
|
|
),
|
|
),
|
|
)
|
|
],
|
|
)
|
|
: Center(
|
|
child: Column(
|
|
mainAxisAlignment:
|
|
MainAxisAlignment.center,
|
|
children: [
|
|
const Icon(
|
|
Icons.file_upload_outlined,
|
|
size: 42,
|
|
color: Colors.white,
|
|
),
|
|
SizedBox(
|
|
height: 10.h,
|
|
),
|
|
text14W400("Back Side")
|
|
],
|
|
),
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
SizedBox(
|
|
height: 70.h,
|
|
),
|
|
CommonBtn(
|
|
text: "Next",
|
|
onTap: () {
|
|
Get.toNamed(RouteName.updateriskprofile);
|
|
},
|
|
),
|
|
SizedBox(
|
|
height: 10.h,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|