diff --git a/assets/images/png/whatsapp.png b/assets/images/png/whatsapp.png new file mode 100644 index 0000000..359036e Binary files /dev/null and b/assets/images/png/whatsapp.png differ diff --git a/lib/Utils/Common/CommonAppbar.dart b/lib/Utils/Common/CommonAppbar.dart index 2203ac4..4fde113 100644 --- a/lib/Utils/Common/CommonAppbar.dart +++ b/lib/Utils/Common/CommonAppbar.dart @@ -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,16 +11,22 @@ class CommonAppbar extends StatelessWidget implements PreferredSizeWidget { const CommonAppbar( {Key? key, required this.titleTxt, + this.suffixIcon, this.showLeading = true, this.customBack, this.backPageName = '', + this.customActionWidget, + this.onCustomActionPressed, this.height = 105}) : super(key: key); final String titleTxt; + final String? suffixIcon; final bool? showLeading; final bool? customBack; final String? backPageName; + final Widget? customActionWidget; + final VoidCallback? onCustomActionPressed; final double height; @override Widget build(BuildContext context) { @@ -50,27 +57,55 @@ 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, + ), + ], ), + // newTextfield( // FontWeight.w400, 0) ], ), ), ), + actions: [ + // if (calendarWidget == true) + // InkWell( + // onTap: onCustomActionPressed, + // child: Padding( + // padding: EdgeInsets.only(right: 14.w), + // child: Icon( + // Icons.calendar_month_outlined, + // color: Color(0xFF3192D8), + // size: 28, + // ), + // ), + // ), + if (customActionWidget != null) + InkWell( + onTap: onCustomActionPressed, + child: Padding( + padding: EdgeInsets.only(right: 14.w), + child: customActionWidget, + ), + ), + ], ), ); } diff --git a/lib/Utils/Common/CommonDropdown.dart b/lib/Utils/Common/CommonDropdown.dart new file mode 100644 index 0000000..d6e18e3 --- /dev/null +++ b/lib/Utils/Common/CommonDropdown.dart @@ -0,0 +1,172 @@ +// ignore_for_file: prefer_const_constructors + +import 'dart:ui'; + +import 'package:dropdown_button2/dropdown_button2.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class CommonDropdownBtn extends StatefulWidget { + const CommonDropdownBtn({ + required this.hint, + required this.items, + this.isEnabled = true, + this.islocation = false, + this.textcolor = false, + this.onItemSelected, + bool showAddButton = false, + super.key, + }); + final String hint; + final List? items; + final void Function(String)? onItemSelected; + final bool isEnabled; + final bool islocation; + final bool textcolor; + + @override + State createState() => _CommonDropdownBtnState(); +} + +class _CommonDropdownBtnState extends State { + final kInnerDecoration = BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.white), + borderRadius: BorderRadius.circular(32), + ); + late String label; + final List items = [ + 'Item1', + 'Item2', + 'Item3', + 'Item4', + 'Item5', + 'Item6', + 'Item7', + 'Item8', + ]; + String? selectedValue; + + @override + Widget build(BuildContext context) { + return DropdownButtonHideUnderline( + child: Row( + children: [ + widget.islocation + ? Padding( + padding: EdgeInsets.only(left: 4.w), + child: SvgPicture.asset("assets/svg/location.svg"), + ) + : SizedBox(), + Expanded( + child: DropdownButton2( + isExpanded: true, + hint: Row( + children: [ + // SizedBox( + // width: 4, + // ), + // widget.islocation + // ? SvgPicture.asset("assets/svg/location.svg") + // : SizedBox(), + + // widget.islocation ? sizedBoxWidth(4.w) : SizedBox(), + + Expanded( + child: Text( + widget.hint, + style: TextStyle( + fontSize: 12.sp, + //fontWeight: FontWeight.bold, + color: Colors.white, + fontWeight: FontWeight.w500), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + items: widget.items! + .map((item) => DropdownMenuItem( + value: item, + child: Text( + item, + style: TextStyle( + color: Colors.white, + fontSize: 16.sp, + fontFamily: 'manrope', + fontWeight: FontWeight.w500, + ), + overflow: TextOverflow.ellipsis, + ), + )) + .toList(), + value: selectedValue, + onChanged: (value) { + setState(() { + selectedValue = value as String; + }); + }, + buttonStyleData: ButtonStyleData( + height: 50.h, + width: double.infinity, + padding: EdgeInsets.only(left: 12.w, right: 4.w), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xFFffffff).withOpacity(0.1), + Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: [ + 0.1, + 1, + ]), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: Color(0xffFEF3F8), + ), + color: Color(0xFFFFFFFF).withOpacity(0.05), + ), + elevation: 0, + ), + iconStyleData: IconStyleData( + icon: Icon( + Icons.keyboard_arrow_down, + ), + iconSize: 23.sp, + iconEnabledColor: Color(0xFF9A0000), + iconDisabledColor: Color(0xFF9A0000), + ), + dropdownStyleData: DropdownStyleData( + maxHeight: 200, + width: 350, + padding: null, + // padding: EdgeInsets.symmetric(horizontal: 16.w), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: Color(0xffCCCCCC), + ), + color: Color(0xFF9A0000).withOpacity(0.9), + ), + elevation: 0, + // offset: const Offset(-20, 0), + scrollbarTheme: ScrollbarThemeData( + radius: const Radius.circular(40), + thickness: MaterialStateProperty.all(6), + thumbVisibility: MaterialStateProperty.all(true), + ), + ), + menuItemStyleData: const MenuItemStyleData( + height: 40, + padding: EdgeInsets.only(left: 14, right: 14), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/Utils/Common/CustomTextFormField.dart b/lib/Utils/Common/CustomTextFormField.dart index 0268f4d..18fba02 100644 --- a/lib/Utils/Common/CustomTextFormField.dart +++ b/lib/Utils/Common/CustomTextFormField.dart @@ -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 createState() => _CustomTextFormFieldState(); @@ -80,6 +84,7 @@ class _CustomTextFormFieldState extends State { 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 { ], ), ) - : null, + : widget.suffixIcon == null + ? null + : widget.suffixIcon!, border: InputBorder.none, contentPadding: EdgeInsets.symmetric(horizontal: 10), ), diff --git a/lib/Utils/text.dart b/lib/Utils/text.dart index 5349051..561da46 100644 --- a/lib/Utils/text.dart +++ b/lib/Utils/text.dart @@ -231,23 +231,34 @@ Widget text14W300(String text) { ); } +<<<<<<< HEAD Widget text14W400(String text) { return Text( +======= + +Widget text14W400(String text) { return Text( +>>>>>>> 9a3ee57750db74808606d8117676461f7d75fd06 text, style: TextStyle( fontSize: 14.sp, color: Colors.white, +<<<<<<< HEAD +======= + +>>>>>>> 9a3ee57750db74808606d8117676461f7d75fd06 fontWeight: FontWeight.w400, fontFamily: 'manrope'), ); } Widget text14W500(String text) { + return Text( text, style: TextStyle( fontSize: 14.sp, color: Colors.white, + fontWeight: FontWeight.w500, fontFamily: 'manrope'), ); @@ -259,11 +270,13 @@ 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, @@ -307,3 +320,4 @@ Widget text14W500_black(String text) { fontFamily: 'manrope'), ); } + diff --git a/lib/main.dart b/lib/main.dart index cffa6a5..406c806 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -95,12 +95,9 @@ class _MyAppState extends State with WidgetsBindingObserver { theme: ThemeData( primarySwatch: Colors.blue, fontFamily: 'manrope', - // textTheme: GoogleFonts.manropeTextTheme(), ), debugShowCheckedModeBanner: false, initialRoute: RouteName.mainscreen, - - //initialRoute: RouteName.mainScreen, getPages: AppRoutes.appRoutes(), ), designSize: const Size(390, 844), diff --git a/lib/resources/routes/route_name.dart b/lib/resources/routes/route_name.dart index 923af2f..341676a 100644 --- a/lib/resources/routes/route_name.dart +++ b/lib/resources/routes/route_name.dart @@ -18,9 +18,6 @@ class RouteName { - - - static const String verifyotp = '/verifyotp'; //secureaccess @@ -28,4 +25,18 @@ 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'; + + //update risk profile + static const String updateriskprofile = '/updateriskprofile'; + + //sidemenu + static const String termsandcondition = '/termsandcondition'; + static const String privacypolicy = '/privacypolicy'; + static const String aboutus = '/aboutus'; } diff --git a/lib/resources/routes/routes.dart b/lib/resources/routes/routes.dart index 457356e..47e36af 100644 --- a/lib/resources/routes/routes.dart +++ b/lib/resources/routes/routes.dart @@ -2,12 +2,21 @@ import 'package:get/get.dart'; import 'package:traderscircuit/Utils/Common/noInternet.dart'; import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/MainScreen/ExploreUnseen.dart'; +import 'package:traderscircuit/view/Sidemenu/AboutUs.dart'; +import 'package:traderscircuit/view/Sidemenu/PrivacyPolicy.dart'; +import 'package:traderscircuit/view/Sidemenu/TermsAndCondition.dart'; + +import 'package:traderscircuit/view/login/AddDetails.dart'; +import 'package:traderscircuit/view/login/Kyc.dart'; + import 'package:traderscircuit/view/MainScreen/HomeScreen.dart'; import 'package:traderscircuit/view/MainScreen/MainScreen.dart'; import 'package:traderscircuit/view/MainScreen/Notification.dart'; import 'package:traderscircuit/view/MainScreen/ShortTrade.dart'; import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart'; + import 'package:traderscircuit/view/login/LoginScreen.dart'; +import 'package:traderscircuit/view/login/UpdateRiskProfile.dart'; import 'package:traderscircuit/view/login/VerifyOtp.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; @@ -94,5 +103,36 @@ class AppRoutes { name: RouteName.exploreUnseen, page: () => const ExploreUnseen(), ), + //add details + GetPage( + name: RouteName.adddetails, + page: () => const AddDetails(), + ), + + //kyc + GetPage( + name: RouteName.kyc, + page: () => const Kyc(), + ), + + //update risk profile + GetPage( + name: RouteName.updateriskprofile, + page: () => const UpdateRiskProfile(), + ), + + //sidemenu + GetPage( + name: RouteName.termsandcondition, + page: () => const TermsAndConditions(), + ), + GetPage( + name: RouteName.privacypolicy, + page: () => const PrivacyPolicy(), + ), + GetPage( + name: RouteName.aboutus, + page: () => const AboutUs(), + ), ]; } diff --git a/lib/view/Sidemenu/AboutUs.dart b/lib/view/Sidemenu/AboutUs.dart new file mode 100644 index 0000000..26e5795 --- /dev/null +++ b/lib/view/Sidemenu/AboutUs.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; +import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; + +class AboutUs extends StatefulWidget { + const AboutUs({super.key}); + + @override + State createState() => _AboutUsState(); +} + +class _AboutUsState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: CommonAppbar( + titleTxt: "About Us", + ), + 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: [ + // CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]), + SizedBox( + height: 10.h, + ), + text16W400( + """Lorem ipsum dolor sit amet, conse consectetur adipiscing elit, sed do euio eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ulla ullamco laboris nisi ut aliquip ex ea It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. \n\ncommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui \n\nofficia deserunt mollit anim id est laborum. cupidatat non proident, sunt in culpa qui commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""), + + SizedBox( + height: 10.h, + ), + ], + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/view/Sidemenu/PrivacyPolicy.dart b/lib/view/Sidemenu/PrivacyPolicy.dart new file mode 100644 index 0000000..a41470c --- /dev/null +++ b/lib/view/Sidemenu/PrivacyPolicy.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; +import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; + +class PrivacyPolicy extends StatefulWidget { + const PrivacyPolicy({super.key}); + + @override + State createState() => _PrivacyPolicyState(); +} + +class _PrivacyPolicyState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: CommonAppbar( + titleTxt: "Privacy Policy", + ), + 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: [ + // CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]), + SizedBox( + height: 10.h, + ), + text16W400( + """Lorem ipsum dolor sit amet, conse consectetur adipiscing elit, sed do euio eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ulla ullamco laboris nisi ut aliquip ex ea It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. \n\ncommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui \n\nofficia deserunt mollit anim id est laborum. cupidatat non proident, sunt in culpa qui commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""), + + SizedBox( + height: 10.h, + ), + ], + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/view/Sidemenu/Sidemenu.dart b/lib/view/Sidemenu/Sidemenu.dart index 8449f40..ca68bf7 100644 --- a/lib/view/Sidemenu/Sidemenu.dart +++ b/lib/view/Sidemenu/Sidemenu.dart @@ -4,6 +4,7 @@ import 'package:flutter_svg/svg.dart'; import 'package:get/get.dart'; import 'package:traderscircuit/Utils/Common/sized_box.dart'; import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; class SideMenu extends StatefulWidget { @@ -85,8 +86,8 @@ class _SideMenuState extends State { ), body: Stack( children: [ - CommonBlurLeft(), - CommonBlurRight(), + // CommonBlurLeft(), + // CommonBlurRight(), Stack(children: [ ListView(children: [ sizedBoxHeight(30.h), @@ -360,7 +361,7 @@ LogOutdialog(context) { "Are you sure you want to logout ?", textAlign: TextAlign.center, style: TextStyle( - fontFamily: "Georgia", + fontFamily: "manrope", fontWeight: FontWeight.w400, fontSize: 20.sp, color: const Color(0xFFFFFFFF)), @@ -425,17 +426,22 @@ void navigateTo(int index, BuildContext context) { case 4: { - // Get.toNamed(RouteName.termsCondition); + Get.toNamed(RouteName.termsandcondition); } break; case 5: { - // Get.toNamed(RouteName.privacyPolicy); + Get.toNamed(RouteName.privacypolicy); + } + break; + case 6: + { + Get.toNamed(RouteName.aboutus); } break; - case 6: + case 7: { Get.bottomSheet( Column( diff --git a/lib/view/Sidemenu/TermsAndCondition.dart b/lib/view/Sidemenu/TermsAndCondition.dart new file mode 100644 index 0000000..92e8dc9 --- /dev/null +++ b/lib/view/Sidemenu/TermsAndCondition.dart @@ -0,0 +1,57 @@ + +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; +import 'package:traderscircuit/Utils/text.dart'; +import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; + +class TermsAndConditions extends StatefulWidget { + const TermsAndConditions({super.key}); + + @override + State createState() => _TermsAndConditionsState(); +} + +class _TermsAndConditionsState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: CommonAppbar( + titleTxt: "Terms & Conditions", + ), + 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: [ + // CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]), + SizedBox( + height: 10.h, + ), + text16W400( + """Lorem ipsum dolor sit amet, conse consectetur adipiscing elit, sed do euio eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ulla ullamco laboris nisi ut aliquip ex ea It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. \n\ncommodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui \n\nofficia deserunt mollit anim id est laborum. cupidatat non proident, sunt in culpa qui commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla velit pariatur. Excepteur sint occaecat velit cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."""), + + SizedBox( + height: 10.h, + ), + ], + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/view/login/AddDetails.dart b/lib/view/login/AddDetails.dart new file mode 100644 index 0000000..0de3d32 --- /dev/null +++ b/lib/view/login/AddDetails.dart @@ -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 createState() => _AddDetailsState(); +} + +class _AddDetailsState extends State { + 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 _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, + ), + ], + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/view/login/Kyc.dart b/lib/view/login/Kyc.dart new file mode 100644 index 0000000..1225b12 --- /dev/null +++ b/lib/view/login/Kyc.dart @@ -0,0 +1,397 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:glassmorphism/glassmorphism.dart'; +import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; +import 'package:traderscircuit/Utils/Common/CommonDropdown.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 Kyc extends StatefulWidget { + const Kyc({super.key}); + + @override + State createState() => _KycState(); +} + +class _KycState extends State { + 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 _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", + customActionWidget: text16W400("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: [ + // 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(), + 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", + onTap: () { + Get.toNamed(RouteName.updateriskprofile); + }, + ), + SizedBox( + height: 10.h, + ), + ], + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/view/login/UpdateRiskProfile.dart b/lib/view/login/UpdateRiskProfile.dart new file mode 100644 index 0000000..8cc0b34 --- /dev/null +++ b/lib/view/login/UpdateRiskProfile.dart @@ -0,0 +1,65 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:glassmorphism/glassmorphism.dart'; +import 'package:traderscircuit/Utils/Common/CommonAppbar.dart'; +import 'package:traderscircuit/Utils/Common/CommonDropdown.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 UpdateRiskProfile extends StatefulWidget { + const UpdateRiskProfile({super.key}); + + @override + State createState() => _UpdateRiskProfileState(); +} + +class _UpdateRiskProfileState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: CommonAppbar( + titleTxt: "Update Risk Profile", + customActionWidget: text16W400("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: [ + // CommonDropdownBtn(hint: "hint", items: ["hi", "hii"]), + CommonBtn( + text: "Next", + onTap: () { + Get.toNamed(RouteName.mainscreen); + }, + ), + SizedBox( + height: 10.h, + ), + ], + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/view/secureAccess.dart/Faceid.dart b/lib/view/secureAccess.dart/Faceid.dart index ecd9b37..eaa12d3 100644 --- a/lib/view/secureAccess.dart/Faceid.dart +++ b/lib/view/secureAccess.dart/Faceid.dart @@ -20,7 +20,10 @@ class _FaceidState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: CommonAppbar(titleTxt: "Secure your access"), + appBar: CommonAppbar( + titleTxt: "Secure your access", + // customActionWidget: SizedBox(), + ), backgroundColor: Colors.black, extendBody: true, body: Stack( @@ -37,9 +40,6 @@ class _FaceidState extends State { // crossAxisAlignment: CrossAxisAlignment.start, children: [ - SizedBox( - height: 10.h, - ), text18W400("Quickly set up Face ID for secure access."), SizedBox( height: 180.h, @@ -56,7 +56,7 @@ class _FaceidState extends State { CommonBtn( text: "Setup", onTap: () { - Get.toNamed(RouteName.loginscreen); + Get.toNamed(RouteName.adddetails); }, ) ], diff --git a/lib/view/secureAccess.dart/Fingerprint.dart b/lib/view/secureAccess.dart/Fingerprint.dart index e482638..b7c750b 100644 --- a/lib/view/secureAccess.dart/Fingerprint.dart +++ b/lib/view/secureAccess.dart/Fingerprint.dart @@ -37,9 +37,6 @@ class _FingerprintState extends State { // 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 { CommonBtn( text: "Setup", onTap: () { - Get.toNamed(RouteName.loginscreen); + Get.toNamed(RouteName.adddetails); }, ) ], diff --git a/lib/view/secureAccess.dart/Pin.dart b/lib/view/secureAccess.dart/Pin.dart index af2e77e..1caaa4b 100644 --- a/lib/view/secureAccess.dart/Pin.dart +++ b/lib/view/secureAccess.dart/Pin.dart @@ -22,7 +22,7 @@ class _PinState extends State { @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 { // 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); }, ) ], diff --git a/lib/view/secureAccess.dart/SecureAccess.dart b/lib/view/secureAccess.dart/SecureAccess.dart index dbaec0c..49bb891 100644 --- a/lib/view/secureAccess.dart/SecureAccess.dart +++ b/lib/view/secureAccess.dart/SecureAccess.dart @@ -22,7 +22,7 @@ class _SecureAccessState extends State { @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 { 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 { height: 250.h, ), CommonBtn( - text: "Verify OTP", + text: "Setup Later", onTap: () { - Get.toNamed(RouteName.loginscreen); + Get.toNamed(RouteName.adddetails); }, ) ], diff --git a/pubspec.lock b/pubspec.lock index 2363400..950f7f8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -81,6 +81,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.10" + dropdown_button2: + dependency: "direct main" + description: + name: dropdown_button2 + sha256: b0fe8d49a030315e9eef6c7ac84ca964250155a6224d491c1365061bc974a9e1 + url: "https://pub.dev" + source: hosted + version: "2.3.9" fake_async: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 32cc2a3..bc3d451 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -42,6 +42,7 @@ dependencies: glassmorphism: ^3.0.0 pin_code_fields: ^8.0.1 fluttertoast: ^8.0.9 + dropdown_button2: ^2.1.4 dev_dependencies: flutter_test: