conflict resolved
BIN
assets/images/png/appbararrowbutton.png
Normal file
|
After Width: | Height: | Size: 202 B |
BIN
assets/images/png/arrowdown.png
Normal file
|
After Width: | Height: | Size: 183 B |
BIN
assets/images/png/arrowup.png
Normal file
|
After Width: | Height: | Size: 189 B |
BIN
assets/images/png/blureffect.png
Normal file
|
After Width: | Height: | Size: 457 KiB |
BIN
assets/images/png/blurwhole.png
Normal file
|
After Width: | Height: | Size: 753 KiB |
BIN
assets/images/png/briefcase.png
Normal file
|
After Width: | Height: | Size: 357 B |
BIN
assets/images/png/camera.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
assets/images/png/dateimage.png
Normal file
|
After Width: | Height: | Size: 269 B |
BIN
assets/images/png/gendericon.png
Normal file
|
After Width: | Height: | Size: 403 B |
BIN
assets/images/png/informationicon.png
Normal file
|
After Width: | Height: | Size: 330 B |
BIN
assets/images/png/location.png
Normal file
|
After Width: | Height: | Size: 394 B |
BIN
assets/images/png/lock.png
Normal file
|
After Width: | Height: | Size: 406 B |
BIN
assets/images/png/login1.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
assets/images/png/login2.png
Normal file
|
After Width: | Height: | Size: 523 B |
BIN
assets/images/png/login3.png
Normal file
|
After Width: | Height: | Size: 881 B |
BIN
assets/images/png/login4.png
Normal file
|
After Width: | Height: | Size: 735 B |
BIN
assets/images/png/mail.png
Normal file
|
After Width: | Height: | Size: 400 B |
BIN
assets/images/png/tellusprofileimage.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
assets/images/png/user.png
Normal file
|
After Width: | Height: | Size: 305 B |
3
assets/images/svg/loginpasswordclose.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7.09828 7.1543C5.40228 8.19773 3.79771 9.81373 2.28571 12C5.18513 16.1909 8.42285 18.2857 12 18.2857C13.6263 18.2857 15.1828 17.8514 16.6686 16.9863M18.4834 15.6834C19.6034 14.72 20.68 13.4937 21.7143 12C18.8148 7.80916 15.5771 5.7143 12 5.7143C11.0514 5.7143 10.1257 5.86287 9.22399 6.15658M4.57142 4.57144L19.4286 19.5097" stroke="#FCFCFC" stroke-opacity="0.5" stroke-width="1.42857" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 548 B |
4
assets/images/svg/loginpasswordopen.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.4834 5.46875C8.67776 5.46875 4.77395 7.67139 1.70071 12.0767C1.61299 12.2038 1.50238 12.3456 1.50003 12.5C1.49768 12.6544 1.6037 12.8146 1.68752 12.9443C4.04885 16.6406 7.90041 19.5312 12.4834 19.5312C17.0166 19.5312 20.9473 16.6318 23.313 12.9272C23.3949 12.8001 23.5 12.6513 23.5 12.5C23.5 12.3487 23.3949 12.2014 23.313 12.0742C20.9419 8.41211 16.9824 5.46875 12.4834 5.46875Z" stroke="white" stroke-opacity="0.5" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12.5 16.4062C14.6574 16.4062 16.4062 14.6574 16.4062 12.5C16.4062 10.3426 14.6574 8.59375 12.5 8.59375C10.3426 8.59375 8.59375 10.3426 8.59375 12.5C8.59375 14.6574 10.3426 16.4062 12.5 16.4062Z" stroke="white" stroke-opacity="0.5" stroke-width="1.5" stroke-miterlimit="10"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 886 B |
4
assets/images/svg/mail.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="24" height="19" viewBox="0 0 24 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M1.58936 1.58936V1C1.43306 1 1.28315 1.06209 1.17262 1.17262C1.06209 1.28315 1 1.43306 1 1.58936H1.58936ZM22.8065 1.58936H23.3958C23.3958 1.43306 23.3337 1.28315 23.2232 1.17262C23.1127 1.06209 22.9628 1 22.8065 1V1.58936ZM1.58936 2.17873H22.8065V1H1.58936V2.17873ZM22.2171 1.58936V15.7341H23.3958V1.58936H22.2171ZM20.449 17.5022H3.94682V18.6809H20.449V17.5022ZM2.17873 15.7341V1.58936H1V15.7341H2.17873ZM3.94682 17.5022C3.47789 17.5022 3.02817 17.3159 2.69659 16.9843C2.36501 16.6528 2.17873 16.203 2.17873 15.7341H1C1 16.5157 1.31047 17.2652 1.8631 17.8178C2.41574 18.3705 3.16528 18.6809 3.94682 18.6809V17.5022ZM22.2171 15.7341C22.2171 16.203 22.0308 16.6528 21.6993 16.9843C21.3677 17.3159 20.9179 17.5022 20.449 17.5022V18.6809C21.2306 18.6809 21.9801 18.3705 22.5327 17.8178C23.0854 17.2652 23.3958 16.5157 23.3958 15.7341H22.2171Z" fill="#FCFCFC"/>
|
||||
<path d="M1.58939 1.58936L12.1979 12.1979L22.8065 1.58936" stroke="#FCFCFC" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -1,12 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class TextInputField extends StatefulWidget {
|
||||
TextInputField({Key? key, this.hinttext, this.controller, this.validator})
|
||||
: super(key: key);
|
||||
@@ -220,3 +219,7 @@ Widget popupMenuItemWidget({
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
String extractFileName(String filePath) {
|
||||
return path.basename(filePath);
|
||||
}
|
||||
|
||||
125
lib/Common/controller/profileimagecontroller.dart
Normal file
@@ -0,0 +1,125 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:image_cropper/image_cropper.dart';
|
||||
|
||||
class ProfileImageController extends GetxController {
|
||||
RxString profilePicPath = "".obs;
|
||||
//RxString fileNameFromPath = "".obs;
|
||||
|
||||
// void getImage(ImageSource imgSource) async {
|
||||
// final ImagePicker picker = ImagePicker();
|
||||
// print('profilePicPath $profilePicPath');
|
||||
// final XFile? pickedImg = await picker.pickImage(source: imgSource);
|
||||
// if (pickedImg != null) {
|
||||
// final CroppedFile? croppedImg = await ImageCropper().cropImage(
|
||||
// sourcePath: pickedImg.path,
|
||||
// aspectRatio: const CropAspectRatio(ratioX: 1, ratioY: 1),
|
||||
// compressFormat: ImageCompressFormat.jpg,
|
||||
// maxHeight: 512,
|
||||
// maxWidth: 512,
|
||||
// compressQuality: 100,
|
||||
// cropStyle: CropStyle.circle,
|
||||
// aspectRatioPresets: [
|
||||
// CropAspectRatioPreset.square,
|
||||
// ],
|
||||
// uiSettings: [
|
||||
// AndroidUiSettings(
|
||||
// toolbarTitle: "Crop Image",
|
||||
// toolbarColor: Get.theme.appBarTheme.backgroundColor,
|
||||
// // toolbarWidgetColor: ColorConstants.kWhite,
|
||||
// backgroundColor: Colors.black,
|
||||
// activeControlsWidgetColor: Colors.red,
|
||||
// // initAspectRatio: CropAspectRatioPreset.original,
|
||||
// cropFrameColor: Colors.white,
|
||||
// lockAspectRatio: false,
|
||||
// ),
|
||||
// IOSUiSettings(
|
||||
// title: 'Crop Image',
|
||||
// ),
|
||||
// ]);
|
||||
// if (croppedImg != null) {
|
||||
// // profilPic = croppedImg.path;
|
||||
// profilePicPath.value = croppedImg.path;
|
||||
|
||||
// // Get.back();
|
||||
// // fileNameFromPath.value = extractFileName(croppedImg.path);
|
||||
// }
|
||||
// }
|
||||
|
||||
// // if (pickedImg != null) {
|
||||
// // final CroppedFile? croppedImg = await ImageCropper().cropImage(
|
||||
// // sourcePath: pickedImg.path,
|
||||
// // aspectRatio: const CropAspectRatio(ratioX: 1, ratioY: 1),
|
||||
// // compressFormat: ImageCompressFormat.jpg,
|
||||
// // maxHeight: 512,
|
||||
// // maxWidth: 512,
|
||||
// // compressQuality: 100,
|
||||
// // cropStyle: CropStyle.circle,
|
||||
// // aspectRatioPresets: [
|
||||
// // CropAspectRatioPreset.square,
|
||||
// // ],
|
||||
// // uiSettings: [
|
||||
// // AndroidUiSettings(
|
||||
// // toolbarTitle: "Crop Image",
|
||||
// // toolbarColor: Get.theme.appBarTheme.backgroundColor,
|
||||
// // // toolbarWidgetColor: ColorConstants.kWhite,
|
||||
// // backgroundColor: Colors.black,
|
||||
// // activeControlsWidgetColor: Colors.red,
|
||||
// // // initAspectRatio: CropAspectRatioPreset.original,
|
||||
// // cropFrameColor: Colors.white,
|
||||
// // lockAspectRatio: false,
|
||||
// // ),
|
||||
// // IOSUiSettings(
|
||||
// // title: 'Crop Image',
|
||||
// // ),
|
||||
// // ]);
|
||||
// // if (croppedImg != null) {
|
||||
// // // profilPic = croppedImg.path;
|
||||
// // profilePicPath.value = croppedImg.path;
|
||||
|
||||
// // // Get.back();
|
||||
// // // fileNameFromPath.value = extractFileName(croppedImg.path);
|
||||
// // }
|
||||
// // }
|
||||
// }
|
||||
|
||||
void getImage(ImageSource imgSource) async {
|
||||
final ImagePicker picker = ImagePicker();
|
||||
print('profilePicPath $profilePicPath');
|
||||
final XFile? pickedImg = await picker.pickImage(source: imgSource);
|
||||
if (pickedImg != null) {
|
||||
final CroppedFile? croppedImg = await ImageCropper().cropImage(
|
||||
sourcePath: pickedImg.path,
|
||||
aspectRatio: const CropAspectRatio(ratioX: 1, ratioY: 1),
|
||||
compressFormat: ImageCompressFormat.jpg,
|
||||
maxHeight: 512,
|
||||
maxWidth: 512,
|
||||
compressQuality: 100,
|
||||
cropStyle: CropStyle.circle,
|
||||
aspectRatioPresets: [
|
||||
CropAspectRatioPreset.square,
|
||||
],
|
||||
uiSettings: [
|
||||
AndroidUiSettings(
|
||||
toolbarTitle: "Crop Image",
|
||||
toolbarColor: Get.theme.appBarTheme.backgroundColor,
|
||||
backgroundColor: Colors.black,
|
||||
activeControlsWidgetColor: Colors.red,
|
||||
cropFrameColor: Colors.white,
|
||||
cropGridColor: Colors.white, // Ensure this matches the theme
|
||||
cropGridColumnCount: 2, // Add to make the grid lines prominent
|
||||
cropGridRowCount: 2, // Add to make the grid lines prominent
|
||||
lockAspectRatio: true, // Ensure the aspect ratio is locked
|
||||
),
|
||||
IOSUiSettings(
|
||||
title: 'Crop Image',
|
||||
),
|
||||
],
|
||||
);
|
||||
if (croppedImg != null) {
|
||||
profilePicPath.value = croppedImg.path;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
499
lib/Login/View/loginscreen.dart
Normal file
@@ -0,0 +1,499 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.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:regroup/Utils/Common/CustomNextButton.dart';
|
||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
class LoginScreen extends StatefulWidget {
|
||||
const LoginScreen({super.key});
|
||||
|
||||
@override
|
||||
State<LoginScreen> createState() => _LoginScreenState();
|
||||
}
|
||||
|
||||
class _LoginScreenState extends State<LoginScreen> {
|
||||
TextEditingController _email = TextEditingController();
|
||||
RxBool isObscured = true.obs;
|
||||
TextEditingController _password = TextEditingController();
|
||||
// final GlobalKey<FormState> _form = GlobalKey<FormState>();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(
|
||||
top: 210,
|
||||
left: -30,
|
||||
child: CommonBlurLeftSecond()),
|
||||
Positioned(
|
||||
top: 400,
|
||||
right: -30,
|
||||
child: CommonBlurRightSecond()),
|
||||
Positioned(
|
||||
top: 550,
|
||||
left: -30,
|
||||
child: CommonBlurLeftBlue()),
|
||||
SingleChildScrollView(
|
||||
child: GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 10,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 271.h,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
"assets/images/png/blurwhole.png"),
|
||||
fit: BoxFit.fill)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 100.h),
|
||||
child: Center(
|
||||
child: SvgPicture.asset(
|
||||
"assets/images/svg/onboarding2.svg",
|
||||
width: 104.w,
|
||||
height: 104.h,
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(15.h),
|
||||
Center(
|
||||
child: text22400white('Find your community')),
|
||||
],
|
||||
)),
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
sizedBoxHeight(35.h),
|
||||
text16400white('Email address'),
|
||||
sizedBoxHeight(10.h),
|
||||
// TextFormField(
|
||||
// style: TextStyle(
|
||||
// fontSize: 16.sp, color: Colors.white),
|
||||
// validator: (value) {
|
||||
// if (value == null || value.isEmpty) {
|
||||
// return "Please enter email";
|
||||
// }
|
||||
|
||||
// // Check if the entered value is a valid email address
|
||||
// bool isEmailValid = RegExp(
|
||||
// r'^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$')
|
||||
// .hasMatch(value);
|
||||
|
||||
// if (!isEmailValid) {
|
||||
// return "Please enter valid email";
|
||||
// }
|
||||
|
||||
// return null;
|
||||
// },
|
||||
// inputFormatters: [
|
||||
// RemoveEmojiInputFormatter(),
|
||||
// LengthLimitingTextInputFormatter(50)
|
||||
// ],
|
||||
// controller: _email,
|
||||
// cursorColor: Colors.white,
|
||||
// autovalidateMode:
|
||||
// AutovalidateMode.onUserInteraction,
|
||||
// decoration: InputDecoration(
|
||||
// fillColor: Color(0xFFFFFFFF).withOpacity(0.10),
|
||||
// filled: true,
|
||||
// prefixIcon: Image.asset(
|
||||
// 'assets/images/png/mail.png',
|
||||
// width: 22.w,
|
||||
// height: 17.h,
|
||||
// ),
|
||||
// // Icon(
|
||||
// // Icons.mail_outline,
|
||||
// // color: Colors.white,
|
||||
// // ),
|
||||
// hintText: 'Enter your email address',
|
||||
// hintStyle: TextStyle(
|
||||
// color: Colors.white,
|
||||
// fontSize: 14.sp,
|
||||
// fontWeight: FontWeight.w400,
|
||||
// fontFamily:
|
||||
// "Helvetica" // Default label color
|
||||
// ),
|
||||
// enabledBorder: OutlineInputBorder(
|
||||
// borderSide: const BorderSide(
|
||||
// color: Color(0xFF434A53),
|
||||
// ),
|
||||
// borderRadius: BorderRadius.all(
|
||||
// Radius.circular(30.r),
|
||||
// ),
|
||||
// ),
|
||||
// focusedBorder: OutlineInputBorder(
|
||||
// borderSide: BorderSide(
|
||||
// color: Color(
|
||||
// 0xFF434A53), // Border color when focused
|
||||
// ),
|
||||
// borderRadius: BorderRadius.all(
|
||||
// Radius.circular(30.r),
|
||||
// ),
|
||||
// ),
|
||||
// errorBorder: OutlineInputBorder(
|
||||
// borderRadius: BorderRadius.circular(30.r),
|
||||
// borderSide:
|
||||
// const BorderSide(color: Colors.red),
|
||||
// ),
|
||||
// focusedErrorBorder: OutlineInputBorder(
|
||||
// // borderRadius: BorderRadius.circular(8.r),
|
||||
// borderSide: BorderSide(
|
||||
// color: Colors.red,
|
||||
// ),
|
||||
// borderRadius: BorderRadius.all(
|
||||
// Radius.circular(30.r),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
CustomTextFormField(
|
||||
textEditingController: _email,
|
||||
hintText: "Enter your email address",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
SizedBox(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
child: Image.asset(
|
||||
'assets/images/png/mail.png',
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
),
|
||||
),
|
||||
validatorText: "Email Id",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your e-mail address';
|
||||
}
|
||||
if (!RegExp(
|
||||
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$')
|
||||
.hasMatch(value)) {
|
||||
return 'Enter a valid e-mail address';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Password'),
|
||||
sizedBoxHeight(10.h),
|
||||
// Obx(() {
|
||||
// return TextFormField(
|
||||
// style: TextStyle(
|
||||
// fontSize: 16.sp, color: Colors.white),
|
||||
// cursorColor: Colors.white,
|
||||
// autovalidateMode:
|
||||
// AutovalidateMode.onUserInteraction,
|
||||
// obscureText: isObscured.value,
|
||||
// controller: _password,
|
||||
// decoration: InputDecoration(
|
||||
// filled: true,
|
||||
// fillColor:
|
||||
// Color(0xFFFFFFFF).withOpacity(0.10),
|
||||
// prefixIcon: Image.asset(
|
||||
// 'assets/images/png/lock.png',
|
||||
// width: 22.w,
|
||||
// height: 17.h,
|
||||
// ),
|
||||
// // const Icon(
|
||||
// // Icons.lock_outline,
|
||||
// // color: Colors.white,
|
||||
// // ),
|
||||
// suffixIcon: Padding(
|
||||
// padding: EdgeInsets.only(right: 5.w),
|
||||
// child: IconButton(
|
||||
// onPressed: () {
|
||||
// isObscured.value = !isObscured.value;
|
||||
// },
|
||||
// color: Color(0xFF959595),
|
||||
// icon: isObscured.value
|
||||
// // ? const Icon(Icons.visibility_off)
|
||||
// // : const Icon(Icons.visibility)),
|
||||
// ? SvgPicture.asset(
|
||||
// "assets/images/svg/loginpasswordclose.svg")
|
||||
// // const Icon(Icons.remove_red_eye)
|
||||
// : SvgPicture.asset(
|
||||
// 'assets/images/svg/loginpasswordopen.svg')
|
||||
// // const Icon(
|
||||
// // Icons.remove_red_eye_outlined)
|
||||
// ),
|
||||
// ),
|
||||
// hintText: 'Enter your password',
|
||||
// hintStyle: TextStyle(
|
||||
// color: Colors.white,
|
||||
// fontSize: 14.sp,
|
||||
// fontWeight: FontWeight.w400,
|
||||
// fontFamily:
|
||||
// "Helvetica" // Default label color
|
||||
// ),
|
||||
// enabledBorder: OutlineInputBorder(
|
||||
// borderSide: const BorderSide(
|
||||
// color: Color(0xFF434A53),
|
||||
// ),
|
||||
// borderRadius: BorderRadius.all(
|
||||
// Radius.circular(30.r),
|
||||
// ),
|
||||
// ),
|
||||
// focusedBorder: OutlineInputBorder(
|
||||
// borderSide: BorderSide(
|
||||
// color: Color(
|
||||
// 0xFF434A53), // Border color when focused
|
||||
// ),
|
||||
// borderRadius: BorderRadius.all(
|
||||
// Radius.circular(30.r),
|
||||
// ),
|
||||
// ),
|
||||
// errorBorder: OutlineInputBorder(
|
||||
// borderRadius: BorderRadius.circular(30.r),
|
||||
// borderSide:
|
||||
// const BorderSide(color: Colors.red),
|
||||
// ),
|
||||
// focusedErrorBorder: OutlineInputBorder(
|
||||
// // borderRadius: BorderRadius.circular(8.r),
|
||||
// borderSide: BorderSide(
|
||||
// color: Colors.red,
|
||||
// ),
|
||||
// borderRadius: BorderRadius.all(
|
||||
// Radius.circular(30.r),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// validator: (val) {
|
||||
// if (val == null || val.isEmpty) {
|
||||
// return 'Please enter your password';
|
||||
// }
|
||||
// return null;
|
||||
// },
|
||||
// inputFormatters: [
|
||||
// RemoveEmojiInputFormatter(),
|
||||
// LengthLimitingTextInputFormatter(50)
|
||||
// ],
|
||||
// );
|
||||
// }),
|
||||
CustomTextFormFieldPassword(
|
||||
isInputPassword: true,
|
||||
textEditingController: _password,
|
||||
hintText: 'Enter your password',
|
||||
leadingIcon: Image.asset(
|
||||
'assets/images/png/lock.png',
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
),
|
||||
// const Icon(Icons.lock_outline),
|
||||
validatorText: "Enter your password",
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Please enter your password';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(right: 6.w),
|
||||
child: text14400white('Forgot password ?'),
|
||||
)),
|
||||
sizedBoxHeight(40.h),
|
||||
CustomButton(text: "Login", onPressed: () {}),
|
||||
sizedBoxHeight(20.h),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.signupscreen);
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text14400white('Don’t have account ? '),
|
||||
sizedBoxWidth(5.w),
|
||||
text14700white('Sign up')
|
||||
],
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 160,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
strokeAlign:
|
||||
BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF434A53),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxWidth(6.w),
|
||||
text14400white('Or'),
|
||||
sizedBoxWidth(6.w),
|
||||
Container(
|
||||
width: 160,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
strokeAlign:
|
||||
BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF434A53),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Center(
|
||||
child: SizedBox(
|
||||
width: 220.w,
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 55,
|
||||
height: 55,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.71, -0.70),
|
||||
end: Alignment(-0.71, 0.7),
|
||||
colors: [
|
||||
Colors.white.withOpacity(
|
||||
0.07999999821186066),
|
||||
Colors.white.withOpacity(
|
||||
0.12999999523162842)
|
||||
],
|
||||
),
|
||||
shape: OvalBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
color: Color(0xFF434A53)),
|
||||
),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/login2.png'))),
|
||||
),
|
||||
Spacer(),
|
||||
Container(
|
||||
width: 55,
|
||||
height: 55,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.71, -0.70),
|
||||
end: Alignment(-0.71, 0.7),
|
||||
colors: [
|
||||
Colors.white.withOpacity(
|
||||
0.07999999821186066),
|
||||
Colors.white.withOpacity(
|
||||
0.12999999523162842)
|
||||
],
|
||||
),
|
||||
shape: OvalBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
color: Color(0xFF434A53)),
|
||||
),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/login3.png'))),
|
||||
),
|
||||
Spacer(),
|
||||
Container(
|
||||
width: 55,
|
||||
height: 55,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.71, -0.70),
|
||||
end: Alignment(-0.71, 0.7),
|
||||
colors: [
|
||||
Colors.white.withOpacity(
|
||||
0.07999999821186066),
|
||||
Colors.white.withOpacity(
|
||||
0.12999999523162842)
|
||||
],
|
||||
),
|
||||
shape: OvalBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
color: Color(0xFF434A53)),
|
||||
),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/login4.png'))),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
)),
|
||||
),
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,25 @@
|
||||
// ignore_for_file: non_constant_identifier_names, file_names, prefer_const_constructors
|
||||
// // ignore_for_file: non_constant_identifier_names, file_names, prefer_const_constructors
|
||||
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
// import 'package:get/get.dart';
|
||||
|
||||
// class CommonAppbar extends StatelessWidget implements PreferredSizeWidget {
|
||||
// @override
|
||||
// Size get preferredSize => Size.fromHeight(90);
|
||||
// const CommonAppbar({
|
||||
// Key? key,
|
||||
// required this.titleTxt,
|
||||
// this.showLeading = true,
|
||||
// this.customBack,
|
||||
// this.profileverifyback,
|
||||
// this.backPageName = '',
|
||||
// // this.height = 105
|
||||
// }) : super(key: key);
|
||||
|
||||
// final String titleTxt;
|
||||
// final bool? showLeading;
|
||||
// final bool? customBack;
|
||||
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
|
||||
@@ -1,137 +1,133 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class CommonDropdownfield extends StatefulWidget {
|
||||
CommonDropdownfield(
|
||||
{Key? key,
|
||||
this.validator,
|
||||
this.inputFormatters,
|
||||
required this.hintText,
|
||||
required this.validatorText,
|
||||
this.textEditingController,
|
||||
this.leadingIcon,
|
||||
this.readonly = false,
|
||||
this.textCapital = false,
|
||||
this.isInputPassword = false,
|
||||
this.outlineColor = Colors.black,
|
||||
this.texttype,
|
||||
this.onInput,
|
||||
this.onTap,
|
||||
this.maxlines = 1,
|
||||
this.suffixIcon})
|
||||
: super(key: key);
|
||||
class CustomDropDownWidgetSignup extends StatefulWidget {
|
||||
const CustomDropDownWidgetSignup({
|
||||
Key? key,
|
||||
required this.header,
|
||||
required this.title,
|
||||
required this.listData,
|
||||
required this.onItemSelected,
|
||||
required this.leadingImage,
|
||||
}) : super(key: key);
|
||||
|
||||
dynamic validator;
|
||||
final TextEditingController? textEditingController;
|
||||
final String hintText;
|
||||
final String validatorText;
|
||||
final Widget? leadingIcon;
|
||||
final bool isInputPassword;
|
||||
final bool readonly;
|
||||
final bool textCapital;
|
||||
final dynamic inputFormatters;
|
||||
final Color outlineColor;
|
||||
final TextInputType? texttype;
|
||||
Function(String)? onInput;
|
||||
final VoidCallback? onTap;
|
||||
final int maxlines;
|
||||
final Widget? suffixIcon;
|
||||
final String header;
|
||||
final String title;
|
||||
final List<String> listData;
|
||||
final Function(String) onItemSelected;
|
||||
final Widget? leadingImage;
|
||||
|
||||
@override
|
||||
State<CommonDropdownfield> createState() => _CommonDropdownfieldState();
|
||||
State<CustomDropDownWidgetSignup> createState() =>
|
||||
_CustomDropDownWidgetSignupState();
|
||||
}
|
||||
|
||||
class _CommonDropdownfieldState extends State<CommonDropdownfield> {
|
||||
late bool obscureText;
|
||||
var emojiFormatter = RemoveEmojiInputFormatter();
|
||||
|
||||
class _CustomDropDownWidgetSignupState
|
||||
extends State<CustomDropDownWidgetSignup> {
|
||||
RxBool onDropTap = false.obs;
|
||||
RxString selectedValue = "".obs;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
obscureText = widget.isInputPassword;
|
||||
}
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
List<TextInputFormatter> allFormatters = [emojiFormatter];
|
||||
if (widget.inputFormatters != null) {
|
||||
allFormatters.addAll(widget.inputFormatters);
|
||||
}
|
||||
return TextFormField(
|
||||
textCapitalization: widget.textCapital
|
||||
? TextCapitalization.characters
|
||||
: TextCapitalization.none,
|
||||
onTap: widget.onTap,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
),
|
||||
readOnly: widget.readonly,
|
||||
maxLines: widget.maxlines,
|
||||
cursorColor: const Color(0xFF1B8DC9),
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
obscureText: obscureText,
|
||||
controller: widget.textEditingController,
|
||||
decoration: InputDecoration(
|
||||
errorStyle:
|
||||
TextStyle(fontSize: 13, color: Color.fromARGB(255, 245, 130, 122)),
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 20),
|
||||
filled: true,
|
||||
fillColor: Color(0xFFFFF3E4),
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
borderSide:
|
||||
BorderSide(color: Color.fromRGBO(232, 198, 159, 0.50), width: 1),
|
||||
),
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
borderSide: BorderSide(color: Color(0xFFDBDBDB), width: 1),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
borderSide: BorderSide(color: Color(0xFF707070), width: 1),
|
||||
),
|
||||
errorBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
borderSide: const BorderSide(color: Colors.red, width: 1),
|
||||
),
|
||||
focusedErrorBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
borderSide: const BorderSide(color: Colors.red, width: 1),
|
||||
),
|
||||
hintStyle: TextStyle(
|
||||
color: Color(0xFF737373),
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: "DM Sans"),
|
||||
hintText: widget.hintText,
|
||||
prefixIconColor: Color(0xFF737373),
|
||||
prefixIcon: widget.leadingIcon == null
|
||||
? null
|
||||
: Padding(
|
||||
padding: const EdgeInsets.only(left: 14, right: 14),
|
||||
child: widget.leadingIcon!,
|
||||
return Obx(
|
||||
() => Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
onDropTap.value = !onDropTap.value;
|
||||
},
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
height: 50.h,
|
||||
padding: EdgeInsets.only(
|
||||
top: 14.0, bottom: 14.0, right: 14.w, left: 12.w),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFFFFFFF).withOpacity(0.10),
|
||||
borderRadius: onDropTap.value
|
||||
? BorderRadius.vertical(
|
||||
top: Radius.circular(30.r),
|
||||
)
|
||||
: BorderRadius.circular(30.r),
|
||||
border: Border.all(color: const Color(0xFF434A53)),
|
||||
),
|
||||
suffixIcon: widget.suffixIcon == null
|
||||
? null
|
||||
: Padding(
|
||||
padding: const EdgeInsets.only(left: 14, right: 14),
|
||||
child: widget.suffixIcon!,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
// Image.asset(
|
||||
// 'assets/images/png/user.png',
|
||||
// ),
|
||||
widget.leadingImage!,
|
||||
SizedBox(width: 16.w),
|
||||
Text(
|
||||
selectedValue.value.isEmpty
|
||||
? widget.header
|
||||
: selectedValue.value,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontWeight: FontWeight.w400),
|
||||
),
|
||||
],
|
||||
),
|
||||
onDropTap.value
|
||||
? Image.asset('assets/images/png/arrowup.png')
|
||||
: Image.asset('assets/images/png/arrowdown.png'),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
if (onDropTap.value)
|
||||
Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFFFFFFF).withOpacity(0.10),
|
||||
borderRadius: BorderRadius.vertical(
|
||||
bottom: Radius.circular(30.r),
|
||||
),
|
||||
border: Border.all(color: const Color(0xFF434A53)),
|
||||
),
|
||||
child: ListView.builder(
|
||||
shrinkWrap: true,
|
||||
itemCount: widget.listData.length,
|
||||
itemBuilder: (context, index) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
selectedValue.value = widget.listData[index];
|
||||
onDropTap.value = !onDropTap.value;
|
||||
widget.onItemSelected(selectedValue.value);
|
||||
},
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 20.0, right: 20.0, top: 10.0, bottom: 10.0),
|
||||
child: Text(
|
||||
widget.listData[index],
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'Helvetica'),
|
||||
),
|
||||
),
|
||||
// sizedBoxHeight(5.h),
|
||||
if (index != widget.listData.length - 1)
|
||||
Divider(thickness: 1, color: const Color(0xFF434A53)),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
keyboardType: widget.texttype,
|
||||
validator: widget.validator ??
|
||||
(value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Empty value";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: allFormatters,
|
||||
onChanged: (value) {
|
||||
widget.onInput?.call(value);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,12 @@ class CustomButton2 extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return InkWell(
|
||||
onTap: onPressed(),
|
||||
onTap:
|
||||
() {
|
||||
onPressed();
|
||||
|
||||
},
|
||||
// () => onPressed,
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
height: 50.h,
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
// ignore_for_file: must_be_immutable
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
|
||||
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
|
||||
class CustomTextFormField extends StatefulWidget {
|
||||
const CustomTextFormField({
|
||||
@@ -19,7 +20,13 @@ class CustomTextFormField extends StatefulWidget {
|
||||
this.value,
|
||||
this.readonly = false,
|
||||
this.enabled = true,
|
||||
// this.textCapital = false,
|
||||
this.outlineColor = Colors.black,
|
||||
// this.bgColor = const Color(0xFFFFF3E4),
|
||||
// this.prefixIconColor = Colors.white,
|
||||
|
||||
this.maxlines = 1,
|
||||
|
||||
this.texttype,
|
||||
this.inputFormatters,
|
||||
this.onInput,
|
||||
@@ -40,6 +47,10 @@ class CustomTextFormField extends StatefulWidget {
|
||||
final int maxlines;
|
||||
final TextInputType? texttype;
|
||||
final dynamic inputFormatters;
|
||||
|
||||
final Color outlineColor;
|
||||
// final Color bgColor;
|
||||
|
||||
final Function(String)? onInput;
|
||||
final VoidCallback? onTap;
|
||||
final Widget? suffixIcon;
|
||||
|
||||
@@ -15,6 +15,7 @@ class ImageUploadBottomSheet {
|
||||
Function(String) onImagePicked,
|
||||
) {
|
||||
return showModalBottomSheet(
|
||||
backgroundColor: Color(0XFF222935),
|
||||
isScrollControlled: true,
|
||||
context: context,
|
||||
shape: RoundedRectangleBorder(
|
||||
@@ -35,7 +36,7 @@ class ImageUploadBottomSheet {
|
||||
Text(
|
||||
(showFile) ? 'Select Image/File' : 'Select Image',
|
||||
style: TextStyle(
|
||||
color: const Color(0xff444444),
|
||||
color: Colors.white,
|
||||
fontSize: 22.sp,
|
||||
),
|
||||
),
|
||||
@@ -58,7 +59,7 @@ class ImageUploadBottomSheet {
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
backgroundColor: Color(0xFF858585),
|
||||
child: Icon(
|
||||
Icons.camera_alt_outlined,
|
||||
size: 30.sp,
|
||||
@@ -72,7 +73,7 @@ class ImageUploadBottomSheet {
|
||||
'Camera',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -90,7 +91,7 @@ class ImageUploadBottomSheet {
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
backgroundColor: Color(0xFF858585),
|
||||
child: Icon(
|
||||
Icons.image_outlined,
|
||||
size: 30.sp,
|
||||
@@ -104,7 +105,7 @@ class ImageUploadBottomSheet {
|
||||
'Gallery',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -121,7 +122,7 @@ class ImageUploadBottomSheet {
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
backgroundColor: Color(0xFF858585),
|
||||
child: Icon(
|
||||
Icons.file_copy_outlined,
|
||||
size: 30.sp,
|
||||
@@ -135,7 +136,7 @@ class ImageUploadBottomSheet {
|
||||
'File',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
color: Colors.white,
|
||||
fontFamily: 'Poppins'),
|
||||
)
|
||||
],
|
||||
@@ -160,7 +161,7 @@ class ImageUploadBottomSheet {
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
backgroundColor: Color(0xFF858585),
|
||||
child: Icon(
|
||||
Icons.camera_alt_outlined,
|
||||
size: 30.sp,
|
||||
@@ -174,7 +175,7 @@ class ImageUploadBottomSheet {
|
||||
'Camera',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
],
|
||||
@@ -192,7 +193,7 @@ class ImageUploadBottomSheet {
|
||||
children: [
|
||||
CircleAvatar(
|
||||
radius: 27.r,
|
||||
backgroundColor: const Color(0xFFE8C69F80),
|
||||
backgroundColor: Color(0xFF858585),
|
||||
child: Icon(
|
||||
Icons.image_outlined,
|
||||
size: 30.sp,
|
||||
@@ -206,7 +207,7 @@ class ImageUploadBottomSheet {
|
||||
'Gallery',
|
||||
style: TextStyle(
|
||||
fontSize: 13.sp,
|
||||
color: const Color(0xff444444),
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
],
|
||||
|
||||
@@ -121,3 +121,81 @@ class CommonBlurRight extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CommonBlurLeftSecond extends StatelessWidget {
|
||||
const CommonBlurLeftSecond({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
height: 150,
|
||||
width: 150,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Color(0x4CD90B2E).withOpacity(0.5),
|
||||
),
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30),
|
||||
child: Container(
|
||||
height: 200,
|
||||
width: 200,
|
||||
color: Colors.transparent,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CommonBlurRightSecond extends StatelessWidget {
|
||||
const CommonBlurRightSecond({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
height: 160,
|
||||
width: 160,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Color(0x4CD90B2E).withOpacity(0.5),
|
||||
),
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30),
|
||||
child: Container(
|
||||
height: 200,
|
||||
width: 200,
|
||||
color: Colors.transparent,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CommonBlurLeftBlue extends StatelessWidget {
|
||||
const CommonBlurLeftBlue({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
height: 150,
|
||||
width: 180,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Color(0xFF009DAB).withOpacity(0.50),
|
||||
),
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30),
|
||||
child: Container(
|
||||
height: 200,
|
||||
width: 200,
|
||||
color: Colors.transparent,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,55 @@ Widget text22400white(String text) {
|
||||
color: AppColors.white,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'Helvetica'),
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
Widget text20400white(String text) {
|
||||
return Text(
|
||||
text,
|
||||
style: TextStyle(
|
||||
fontSize: 20.sp,
|
||||
color: AppColors.white,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'Helvetica'),
|
||||
);
|
||||
}
|
||||
|
||||
Widget text16400white(String text) {
|
||||
return Text(
|
||||
text,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 16.sp,
|
||||
color: AppColors.white,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'Helvetica'),
|
||||
);
|
||||
}
|
||||
|
||||
Widget text14400white(String text) {
|
||||
return Text(
|
||||
text,
|
||||
// textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 14.sp,
|
||||
color: AppColors.white,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'Helvetica'),
|
||||
);
|
||||
}
|
||||
|
||||
Widget text14700white(String text) {
|
||||
return Text(
|
||||
text,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 14.sp,
|
||||
color: AppColors.white,
|
||||
fontWeight: FontWeight.w700,
|
||||
fontFamily: 'Helvetica'),
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
233
lib/onboarding/Signup/View/Business/tellusbusiness.dart
Normal file
@@ -0,0 +1,233 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
import 'package:regroup/Utils/dialogs.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
class TellusaboutBusiness extends StatefulWidget {
|
||||
const TellusaboutBusiness({super.key});
|
||||
|
||||
@override
|
||||
State<TellusaboutBusiness> createState() => _TellusaboutBusinessState();
|
||||
}
|
||||
|
||||
class _TellusaboutBusinessState extends State<TellusaboutBusiness> {
|
||||
TextEditingController businessownerController = TextEditingController();
|
||||
TextEditingController businessNameController = TextEditingController();
|
||||
TextEditingController businesslocation = TextEditingController();
|
||||
|
||||
final List<String> _businesslist = [
|
||||
'Retail',
|
||||
'Hospitality',
|
||||
'Event provider',
|
||||
'Coaching services',
|
||||
'Recruitment & Scouting',
|
||||
'Healthcare & Wellbeing',
|
||||
'Other',
|
||||
];
|
||||
|
||||
String _selectedbusinesstype = '';
|
||||
|
||||
void _onItemSelected(String value) {
|
||||
setState(() {
|
||||
_selectedbusinesstype = value;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 90, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 300, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 490, left: -30, child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 10,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: ListView(physics: ScrollPhysics(), children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// const Spacer(flex: 1),
|
||||
sizedBoxHeight(60.h),
|
||||
Center(
|
||||
child:
|
||||
text20400white('Tell us about your business')),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 154,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign: BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(40.h),
|
||||
text16400white('Business owner name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: businessownerController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your business owner name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
validatorText: "Enter your business owner name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your business owner name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Business name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: businessNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your business name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/briefcase.png',
|
||||
),
|
||||
validatorText: "Enter your business name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your business name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Business location'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: businessNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your business location",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/location.png',
|
||||
),
|
||||
validatorText: "Enter your business location",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your business location ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Type of business'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomDropDownWidgetSignup(
|
||||
header: 'Select type of business',
|
||||
title: '',
|
||||
listData: _businesslist,
|
||||
onItemSelected: _onItemSelected,
|
||||
leadingImage:
|
||||
Image.asset('assets/images/png/briefcase.png'),
|
||||
),
|
||||
|
||||
sizedBoxHeight(50.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
if (_selectedbusinesstype.isNotEmpty) {
|
||||
// Get.toNamed(page)
|
||||
|
||||
// Get.to(() => BusinessPage());
|
||||
} else {
|
||||
// Handle case where no selection is made
|
||||
utils.showToast('Please select an gender type');
|
||||
}
|
||||
}),
|
||||
sizedBoxHeight(30.h),
|
||||
// const Spacer(
|
||||
// flex: 3,
|
||||
// )
|
||||
],
|
||||
),
|
||||
),
|
||||
])),
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
429
lib/onboarding/Signup/View/Individual/tellusindividual.dart
Normal file
@@ -0,0 +1,429 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:regroup/Common/CommonWidget.dart';
|
||||
import 'package:regroup/Common/controller/profileimagecontroller.dart';
|
||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
||||
import 'package:regroup/Utils/Common/ImageUpload.dart';
|
||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
import 'package:regroup/Utils/dialogs.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
class TellusaboutIndividual extends StatefulWidget {
|
||||
const TellusaboutIndividual({super.key});
|
||||
|
||||
@override
|
||||
State<TellusaboutIndividual> createState() => _TellusaboutIndividualState();
|
||||
}
|
||||
|
||||
class _TellusaboutIndividualState extends State<TellusaboutIndividual> {
|
||||
TextEditingController fullNameController = TextEditingController();
|
||||
TextEditingController userNameController = TextEditingController();
|
||||
TextEditingController datecontroller = TextEditingController();
|
||||
DateTime? _selectedDate;
|
||||
final photographController = TextEditingController();
|
||||
|
||||
final ProfileImageController editProfileImage =
|
||||
Get.put(ProfileImageController());
|
||||
|
||||
Future<void> _selectDate(BuildContext context) async {
|
||||
DateTime yesterday = DateTime.now().subtract(Duration(days: 1));
|
||||
DateTime eighteenYearsAgo =
|
||||
DateTime.now().subtract(const Duration(days: 365 * 18));
|
||||
final DateTime? pickedDate = await showDatePicker(
|
||||
context: context,
|
||||
initialDate: yesterday,
|
||||
firstDate: DateTime(1950),
|
||||
lastDate: DateTime(2026),
|
||||
builder: (BuildContext context, Widget? child) {
|
||||
return Theme(
|
||||
data: ThemeData.light().copyWith(
|
||||
colorScheme: ColorScheme.dark(
|
||||
primary:
|
||||
Color(0XFF222935).withOpacity(0.60), // Change primary color
|
||||
onPrimary:
|
||||
// Color(0XFF222935).withOpacity(0.60), // Change primary color
|
||||
Colors.white
|
||||
|
||||
// Colors.white, // Change text color
|
||||
),
|
||||
textButtonTheme: TextButtonThemeData(
|
||||
style: TextButton.styleFrom(
|
||||
foregroundColor: Colors.white, // Change button text color
|
||||
),
|
||||
),
|
||||
dialogBackgroundColor:
|
||||
// Color(0xFF434A53),
|
||||
Color(0XFF222935).withOpacity(0.60), // Change primary color
|
||||
|
||||
// // Change dialog background color
|
||||
),
|
||||
child: child!,
|
||||
);
|
||||
},
|
||||
);
|
||||
if (pickedDate != null) {
|
||||
// if (pickedDate.isBefore(eighteenYearsAgo)) {
|
||||
|
||||
setState(() {
|
||||
// selectedDate.value = pickedDate;
|
||||
_selectedDate = pickedDate;
|
||||
datecontroller.text =
|
||||
"${_selectedDate!.day.toString().padLeft(2, '0')}-${_selectedDate!.month.toString().padLeft(2, '0')}-${_selectedDate!.year.toString().padLeft(2, '0')}";
|
||||
});
|
||||
// }
|
||||
// else {
|
||||
// showDialog(
|
||||
// context: context,
|
||||
// builder: (context) {
|
||||
// return AlertDialog(
|
||||
// title: const Text("Age Restriction"),
|
||||
// content: const Text("Sorry, you must be above 18 years age"),
|
||||
// actions: [
|
||||
// TextButton(
|
||||
// onPressed: () {
|
||||
// Navigator.of(context).pop();
|
||||
// },
|
||||
// child: const Text("OK"),
|
||||
// ),
|
||||
// ],
|
||||
// );
|
||||
// },
|
||||
// );
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
final List<String> _gender = ['Male', 'Female', 'Prefer not to say', 'Other'];
|
||||
|
||||
String _selectedgendertype = '';
|
||||
|
||||
void _onItemSelected(String value) {
|
||||
setState(() {
|
||||
_selectedgendertype = value;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 310, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 510, left: -30, child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 10,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: ListView(physics: ScrollPhysics(), children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// const Spacer(flex: 1),
|
||||
sizedBoxHeight(50.h),
|
||||
Center(child: text20400white('Tell us about yourself')),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 154,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign: BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
ImageUploadBottomSheet().showModal(
|
||||
context,
|
||||
false,
|
||||
(result) {
|
||||
print("File path is $result");
|
||||
editProfileImage.profilePicPath.value = result;
|
||||
var filenameresult = extractFileName(result);
|
||||
print("File name is $filenameresult");
|
||||
photographController.text = filenameresult;
|
||||
},
|
||||
);
|
||||
},
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
// Outer circle
|
||||
Container(
|
||||
width: 139.w,
|
||||
height: 139.h,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
color: Color(0XFFD90B2E)
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
),
|
||||
),
|
||||
// Middle circle
|
||||
Container(
|
||||
width: 119.w,
|
||||
height: 119.h,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
color: Color(0XFFD90B2E)
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
),
|
||||
),
|
||||
// Inner circle
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
color: Color(0XFFD90B2E)
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
),
|
||||
child: Obx(() =>
|
||||
// editProfileImage
|
||||
// .profilePicPath.value !=
|
||||
// ''
|
||||
// ?
|
||||
editProfileImage.profilePicPath
|
||||
.value !=
|
||||
''
|
||||
? ClipOval(
|
||||
child: SizedBox.fromSize(
|
||||
size: Size.fromRadius(
|
||||
50.r),
|
||||
child: Image(
|
||||
image: FileImage(
|
||||
File(
|
||||
editProfileImage
|
||||
.profilePicPath
|
||||
.value,
|
||||
),
|
||||
),
|
||||
fit: BoxFit.cover,
|
||||
width: 200.w,
|
||||
height: 200.h,
|
||||
),
|
||||
),
|
||||
)
|
||||
: Image.asset(
|
||||
"assets/images/png/camera.png")
|
||||
// : Image.asset(
|
||||
// "assets/images/png/camera.png")
|
||||
)),
|
||||
// Main button
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 9),
|
||||
text16400white('Add profile picture')
|
||||
],
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Full name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: fullNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your full name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
validatorText: "Enter your full name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your full name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('User name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: userNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your user name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
validatorText: "Enter your user name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your user name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Date of birth'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: datecontroller,
|
||||
readonly: true,
|
||||
onTap: () {
|
||||
_selectDate(context);
|
||||
},
|
||||
// texttype: TextInputType.text,
|
||||
hintText: "Enter your date of birth",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/dateimage.png',
|
||||
),
|
||||
validatorText: "Enter date of birth",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your date of birth';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Gender'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomDropDownWidgetSignup(
|
||||
header: 'Select gender',
|
||||
title: '',
|
||||
listData: _gender,
|
||||
onItemSelected: _onItemSelected,
|
||||
leadingImage:
|
||||
Image.asset('assets/images/png/gendericon.png'),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
text16400white('Location'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset('assets/images/png/informationicon.png')
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: userNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your location",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/location.png',
|
||||
),
|
||||
validatorText: "Enter your location",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your location ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
if (_selectedgendertype.isNotEmpty) {
|
||||
// Get.toNamed(page)
|
||||
|
||||
// Get.to(() => BusinessPage());
|
||||
} else {
|
||||
// Handle case where no selection is made
|
||||
utils.showToast('Please select an gender type');
|
||||
}
|
||||
}),
|
||||
sizedBoxHeight(30.h),
|
||||
// const Spacer(
|
||||
// flex: 3,
|
||||
// )
|
||||
],
|
||||
),
|
||||
),
|
||||
])),
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
440
lib/onboarding/Signup/View/signupscreen.dart
Normal file
@@ -0,0 +1,440 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
import 'package:regroup/Utils/dialogs.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
class SignupScreen extends StatefulWidget {
|
||||
const SignupScreen({super.key});
|
||||
|
||||
@override
|
||||
State<SignupScreen> createState() => _SignupScreenState();
|
||||
}
|
||||
|
||||
class _SignupScreenState extends State<SignupScreen> {
|
||||
TextEditingController emailidcontroller = TextEditingController();
|
||||
TextEditingController _password = TextEditingController();
|
||||
TextEditingController confirmpasscontroller = TextEditingController();
|
||||
|
||||
final List<String> _dropdownProductItems = [
|
||||
'Individual',
|
||||
'Business',
|
||||
];
|
||||
|
||||
String _selectedAccountType = '';
|
||||
|
||||
void _onItemSelected(String value) {
|
||||
setState(() {
|
||||
_selectedAccountType = value;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(
|
||||
top: 210,
|
||||
left: -30,
|
||||
child: CommonBlurLeftSecond()),
|
||||
Positioned(
|
||||
top: 400,
|
||||
right: -30,
|
||||
child: CommonBlurRightSecond()),
|
||||
Positioned(
|
||||
top: 550,
|
||||
left: -30,
|
||||
child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 10,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: ListView(physics: ScrollPhysics(), children: [
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 221.h,
|
||||
decoration: BoxDecoration(
|
||||
// color: Colors.red,
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
"assets/images/png/blurwhole.png"),
|
||||
fit: BoxFit.fill)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 150.h),
|
||||
child: Center(
|
||||
child: text22400white('Create account')),
|
||||
),
|
||||
],
|
||||
)),
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text16400white('Email address'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: emailidcontroller,
|
||||
hintText: "Enter your email address",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
SizedBox(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
child: Image.asset(
|
||||
'assets/images/png/mail.png',
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
),
|
||||
),
|
||||
validatorText: "Email Id",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your e-mail address';
|
||||
}
|
||||
if (!RegExp(
|
||||
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$')
|
||||
.hasMatch(value)) {
|
||||
return 'Enter a valid e-mail address';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Password'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormFieldPassword(
|
||||
isInputPassword: true,
|
||||
textEditingController: _password,
|
||||
hintText: 'Enter your password',
|
||||
leadingIcon: Image.asset(
|
||||
'assets/images/png/lock.png',
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
),
|
||||
// const Icon(Icons.lock_outline),
|
||||
validatorText: "Enter your password",
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Please enter your password';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Confirm password'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
isInputPassword: true,
|
||||
textEditingController: confirmpasscontroller,
|
||||
hintText: "Enter your password",
|
||||
leadingIcon: Image.asset(
|
||||
'assets/images/png/lock.png',
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
),
|
||||
// const Icon(Icons.lock_outline),
|
||||
validatorText: "Enter your password",
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Please enter your password';
|
||||
}
|
||||
if (val != _password.text) {
|
||||
return 'Password does not match';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
text16400white('Account type'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset(
|
||||
'assets/images/png/informationicon.png')
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomDropDownWidgetSignup(
|
||||
header: 'Select account type',
|
||||
title: '',
|
||||
listData: _dropdownProductItems,
|
||||
onItemSelected: _onItemSelected,
|
||||
leadingImage:
|
||||
Image.asset(
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 320.w,
|
||||
height: 42.h,
|
||||
child: Text.rich(
|
||||
TextSpan(
|
||||
children: [
|
||||
TextSpan(
|
||||
text:
|
||||
'By signing up to ReGroup you agree to our ',
|
||||
style: TextStyle(
|
||||
color: Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: 'Terms and Conditions',
|
||||
style: TextStyle(
|
||||
color: Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w700,
|
||||
decoration:
|
||||
TextDecoration.underline,
|
||||
decorationColor: Color(0xffFCFCFC)
|
||||
.withOpacity(0.80),
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: ' and ',
|
||||
style: TextStyle(
|
||||
color: Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: 'Privacy Policy',
|
||||
style: TextStyle(
|
||||
color: Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w700,
|
||||
decoration:
|
||||
TextDecoration.underline,
|
||||
decorationColor: Color(0xffFCFCFC)
|
||||
.withOpacity(0.80),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
if (_selectedAccountType == 'Individual') {
|
||||
// Get.to(() => IndividualPage());
|
||||
print('individual selected');
|
||||
Get.toNamed(RouteName.verifyusercreen,
|
||||
arguments: _selectedAccountType
|
||||
);
|
||||
} else if (_selectedAccountType ==
|
||||
'Business') {
|
||||
print('business selected');
|
||||
Get.toNamed(RouteName.verifyusercreen,
|
||||
arguments: _selectedAccountType
|
||||
);
|
||||
|
||||
// Get.to(() => BusinessPage());
|
||||
} else {
|
||||
// Handle case where no selection is made
|
||||
utils.showToast(
|
||||
'Please select an account type');
|
||||
}
|
||||
}),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 160,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
strokeAlign:
|
||||
BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF434A53),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxWidth(6.w),
|
||||
text14400white('Or'),
|
||||
sizedBoxWidth(6.w),
|
||||
Container(
|
||||
width: 160,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
strokeAlign:
|
||||
BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF434A53),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Center(
|
||||
child: SizedBox(
|
||||
width: 220.w,
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 55,
|
||||
height: 55,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.71, -0.70),
|
||||
end: Alignment(-0.71, 0.7),
|
||||
colors: [
|
||||
Colors.white.withOpacity(
|
||||
0.07999999821186066),
|
||||
Colors.white.withOpacity(
|
||||
0.12999999523162842)
|
||||
],
|
||||
),
|
||||
shape: OvalBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
color: Color(0xFF434A53)),
|
||||
),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/login2.png'))),
|
||||
),
|
||||
Spacer(),
|
||||
Container(
|
||||
width: 55,
|
||||
height: 55,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.71, -0.70),
|
||||
end: Alignment(-0.71, 0.7),
|
||||
colors: [
|
||||
Colors.white.withOpacity(
|
||||
0.07999999821186066),
|
||||
Colors.white.withOpacity(
|
||||
0.12999999523162842)
|
||||
],
|
||||
),
|
||||
shape: OvalBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
color: Color(0xFF434A53)),
|
||||
),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/login3.png'))),
|
||||
),
|
||||
Spacer(),
|
||||
Container(
|
||||
width: 55,
|
||||
height: 55,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.71, -0.70),
|
||||
end: Alignment(-0.71, 0.7),
|
||||
colors: [
|
||||
Colors.white.withOpacity(
|
||||
0.07999999821186066),
|
||||
Colors.white.withOpacity(
|
||||
0.12999999523162842)
|
||||
],
|
||||
),
|
||||
shape: OvalBorder(
|
||||
side: BorderSide(
|
||||
width: 0.50,
|
||||
color: Color(0xFF434A53)),
|
||||
),
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
'assets/images/png/login4.png'))),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
])),
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
171
lib/onboarding/Signup/View/verifyuser.dart
Normal file
@@ -0,0 +1,171 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:pin_code_fields/pin_code_fields.dart';
|
||||
import 'package:regroup/Utils/Common/CommonAppbar.dart';
|
||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
||||
import 'package:regroup/Utils/Common/blureffect.dart';
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
import 'package:regroup/Utils/dialogs.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
|
||||
class VerifyuserScreenState extends StatefulWidget {
|
||||
const VerifyuserScreenState({super.key});
|
||||
|
||||
@override
|
||||
State<VerifyuserScreenState> createState() => _VerifyuserScreenStateState();
|
||||
}
|
||||
|
||||
class _VerifyuserScreenStateState extends State<VerifyuserScreenState> {
|
||||
String accounttype = Get.arguments;
|
||||
TextEditingController? pincode = TextEditingController();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
// appBar: CommonAppbar(
|
||||
// titleTxt: '',
|
||||
// ),
|
||||
body: Stack(
|
||||
children: [
|
||||
// CommonBlurLeftSecond(),
|
||||
Positioned(top: 150, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 350, left: -30, child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 10,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
text22400white('Check your email'),
|
||||
sizedBoxHeight(10.h),
|
||||
text14400white(
|
||||
'Enter the verification code that we sent to loremipsum@gmail.com'),
|
||||
sizedBoxHeight(40.h),
|
||||
text16400white('Enter code'),
|
||||
sizedBoxHeight(20.h),
|
||||
PinCodeTextField(
|
||||
validator: (value) {
|
||||
if (value != null && value.isEmpty) {
|
||||
return "Please Enter verification code";
|
||||
} else if (value != null && value.length < 4) {
|
||||
return "OTP length should be at least 4";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: [
|
||||
FilteringTextInputFormatter.allow(RegExp('[0-9]')),
|
||||
],
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
length: 4,
|
||||
obscureText: false,
|
||||
animationType: AnimationType.fade,
|
||||
pinTheme: PinTheme(
|
||||
selectedFillColor: Color(0xFF434A53),
|
||||
inactiveFillColor: Color(0xFF434A53),
|
||||
inactiveColor: Color(0xFF434A53),
|
||||
activeColor: Color(0xFF434A53),
|
||||
selectedColor: Color(0xFF434A53),
|
||||
shape: PinCodeFieldShape.underline,
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
fieldHeight: 70,
|
||||
fieldWidth: 70,
|
||||
activeFillColor:
|
||||
// Colors.white
|
||||
Color(0xFF303030).withOpacity(0.4),
|
||||
// textStyle: TextStyle(color: Colors.white, fontSize: 20), // Change text color and font size
|
||||
),
|
||||
animationDuration: Duration(milliseconds: 300),
|
||||
enableActiveFill: true,
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
controller: pincode,
|
||||
onCompleted: (v) {
|
||||
print("Completed");
|
||||
},
|
||||
onChanged: (value) {
|
||||
print(value);
|
||||
setState(() {
|
||||
// currentText = value;
|
||||
});
|
||||
},
|
||||
cursorColor: Colors.white,
|
||||
textStyle: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 20.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
),
|
||||
beforeTextPaste: (text) {
|
||||
print("Allowing to paste $text");
|
||||
return true;
|
||||
},
|
||||
appContext: context,
|
||||
),
|
||||
const Spacer(
|
||||
flex: 3,
|
||||
),
|
||||
CustomButton(
|
||||
text: 'Continue',
|
||||
onPressed: () {
|
||||
if (pincode!.text.isEmpty) {
|
||||
utils.showToast('Pin field is empty');
|
||||
} else {
|
||||
if (accounttype == 'Individual') {
|
||||
print('individual selected');
|
||||
Get.toNamed(RouteName.tellusindividualscreen);
|
||||
} else if (accounttype == 'Business') {
|
||||
print('business selected');
|
||||
Get.toNamed(RouteName.tellusbusinessscreen);
|
||||
}
|
||||
}
|
||||
}),
|
||||
const Spacer(
|
||||
// flex: 2,
|
||||
),
|
||||
],
|
||||
),
|
||||
)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
||||
import 'package:regroup/Utils/Common/sized_box.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
|
||||
class Onboarding1 extends StatefulWidget {
|
||||
const Onboarding1({super.key});
|
||||
@@ -22,18 +22,6 @@ class _Onboarding1State extends State<Onboarding1> {
|
||||
return Scaffold(
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(
|
||||
top: 650,
|
||||
left: 100,
|
||||
child: Container(
|
||||
height: 400,
|
||||
width: 200,
|
||||
decoration:
|
||||
BoxDecoration(shape: BoxShape.circle, color: Colors.red
|
||||
// Color(0xFF001D54).withOpacity(0.5),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height: MediaQuery.of(context).size.height,
|
||||
@@ -51,9 +39,22 @@ class _Onboarding1State extends State<Onboarding1> {
|
||||
image: DecorationImage(
|
||||
image: AssetImage("assets/images/png/onboarding1.png"),
|
||||
fit: BoxFit.fill)),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
child: Stack(children: [
|
||||
Positioned(
|
||||
top: 800,
|
||||
left: 0,
|
||||
child: Container(
|
||||
height: 70.h,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
decoration: BoxDecoration(
|
||||
// shape: BoxShape.circle,
|
||||
color:
|
||||
// Colors.red
|
||||
Color(0xFF009DAB).withOpacity(0.50),
|
||||
),
|
||||
),
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
@@ -72,151 +73,74 @@ class _Onboarding1State extends State<Onboarding1> {
|
||||
child: text22400white(
|
||||
"Find motivation and support from like-minded people"),
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
// GlassmorphicContainer(
|
||||
// width: double.infinity,
|
||||
// height: 130.h,
|
||||
// borderRadius: 2,
|
||||
// blur: 10,
|
||||
// alignment: Alignment.bottomLeft,
|
||||
// border: 2,
|
||||
// linearGradient: LinearGradient(
|
||||
// begin: Alignment.topLeft,
|
||||
// end: Alignment.centerRight,
|
||||
// colors: [
|
||||
// // Color(0xFF222935).withOpacity(0.12),
|
||||
// // Color(0xFF222935).withOpacity(0.60),
|
||||
// // Color(0XFF222B37),
|
||||
// // Color(0xFF222935),
|
||||
|
||||
// Color(0xFF009DAB40),
|
||||
// Color(0xFF35798C6F),
|
||||
// Color(0xFFD90B2E54),
|
||||
// Color(0xFFD90B2E85),
|
||||
// Color(0xFFD90B2E96),
|
||||
|
||||
// // Colors.green.withOpacity(0.9),
|
||||
// // Colors.amber.withOpacity(0.1)
|
||||
// ],
|
||||
// ),
|
||||
// borderGradient: LinearGradient(
|
||||
// begin: Alignment.topLeft,
|
||||
// end: Alignment.bottomRight,
|
||||
// colors: [
|
||||
// // Color(0xFFffffff).withOpacity(0.5),
|
||||
// // Color((0xFFFFFFFF)).withOpacity(0.5),
|
||||
|
||||
// // Color(0xFF222935).withOpacity(0.12),
|
||||
// // Color(0xFF222935).withOpacity(0.60),
|
||||
// // Color(0XFF222B37),
|
||||
// // Color(0xFF222935),
|
||||
|
||||
// Colors.green.withOpacity(0.1),
|
||||
// Color((0xFFFFFFFF)).withOpacity(0.5),
|
||||
// ],
|
||||
// ),
|
||||
// child: Column(
|
||||
// children: [
|
||||
// CustomButton(text: "Sign up", onPressed: () {}),
|
||||
// sizedBoxHeight(30.h),
|
||||
// CustomButton2(text: "Login", onPressed: () {}),
|
||||
// ],
|
||||
// )),
|
||||
CustomButton(text: "Sign up", onPressed: () {}),
|
||||
sizedBoxHeight(30.h),
|
||||
CustomButton2(text: "Login", onPressed: () {}),
|
||||
sizedBoxHeight(90.h),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height: 180.h,
|
||||
borderRadius: 2,
|
||||
blur: 30,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.centerRight,
|
||||
colors: [
|
||||
Color(0xFF222935).withOpacity(0.12),
|
||||
Color(0xFF222935).withOpacity(0.60),
|
||||
Color(0XFF222B37).withOpacity(0.12),
|
||||
Color(0xFF222935).withOpacity(0.60),
|
||||
|
||||
// Color(0xFF009DAB40),
|
||||
// Color(0xFF35798C6F),
|
||||
// Color(0xFFD90B2E54),
|
||||
// Color(0xFFD90B2E85),
|
||||
// Color(0xFFD90B2E96),
|
||||
|
||||
// Colors.green.withOpacity(0.9),
|
||||
// Colors.amber.withOpacity(0.1)
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
// Color(0xFFffffff).withOpacity(0.5),
|
||||
// Color((0xFFFFFFFF)).withOpacity(0.5),
|
||||
|
||||
Color(0xFF222935).withOpacity(0.12),
|
||||
Color(0xFF222935).withOpacity(0.60),
|
||||
Color(0XFF222B37),
|
||||
Color(0xFF222935),
|
||||
|
||||
// Colors.green.withOpacity(0.1),
|
||||
// Color((0xFFFFFFFF)).withOpacity(0.5),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
children: [
|
||||
CustomButton(
|
||||
text: "Sign up",
|
||||
onPressed: () {
|
||||
Get.toNamed(RouteName.signupscreen);
|
||||
}),
|
||||
sizedBoxHeight(30.h),
|
||||
CustomButton2(
|
||||
text: "Login",
|
||||
onPressed: () {
|
||||
Get.toNamed(RouteName.loginScreen);
|
||||
}),
|
||||
// sizedBoxHeight(10.h),
|
||||
],
|
||||
),
|
||||
)),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
// Positioned(
|
||||
// bottom: -100,
|
||||
// left: 100,
|
||||
// child: Container(
|
||||
// height: 200,
|
||||
// width: 200,
|
||||
// decoration:
|
||||
// BoxDecoration(shape: BoxShape.circle, color: Colors.red
|
||||
// // Color(0xFF001D54).withOpacity(0.5),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
// Scaffold(
|
||||
// backgroundColor: Color(0xff222935),
|
||||
// body: Container(
|
||||
// width: MediaQuery.of(context).size.width,
|
||||
// height: MediaQuery.of(context).size.height,
|
||||
// decoration: BoxDecoration(
|
||||
// gradient: LinearGradient(
|
||||
// begin: Alignment.center,
|
||||
// end: Alignment.bottomCenter,
|
||||
// colors: [
|
||||
// Color(0xFF222935).withOpacity(0.12),
|
||||
// Color(0xFF222935).withOpacity(0.60),
|
||||
// Color(0XFF222B37),
|
||||
// Color(0xFF222935),
|
||||
// ],
|
||||
// ),
|
||||
// image: DecorationImage(
|
||||
// image: AssetImage("assets/images/png/onboarding1.png"),
|
||||
// fit: BoxFit.fill)),
|
||||
// child: Stack(children: [
|
||||
// Positioned.fill(
|
||||
// child: Container(
|
||||
// color: Colors.black.withOpacity(0.2),
|
||||
// ),
|
||||
// ),
|
||||
// Positioned(
|
||||
// bottom: -100,
|
||||
// left: 100,
|
||||
// child: BackdropFilter(
|
||||
// filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||
// child: Container(
|
||||
// height: 200,
|
||||
// width: 200,
|
||||
// decoration: BoxDecoration(
|
||||
// shape: BoxShape.circle,
|
||||
// color: Color(0xFF001D54).withOpacity(0.5),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// Padding(
|
||||
// padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.center,
|
||||
// mainAxisAlignment: MainAxisAlignment.start,
|
||||
// children: [
|
||||
// Spacer(),
|
||||
// SvgPicture.asset(
|
||||
// "assets/images/svg/onboarding2.svg",
|
||||
// width: 104.w,
|
||||
// height: 104.h,
|
||||
// ),
|
||||
// const Spacer(
|
||||
// flex: 8,
|
||||
// ),
|
||||
// SizedBox(
|
||||
// width: 301.w,
|
||||
// height: 64.h,
|
||||
// child: text22400white(
|
||||
// "Find motivation and support from like-minded people"),
|
||||
// ),
|
||||
// sizedBoxHeight(50.h),
|
||||
// CustomButton(text: "Sign up", onPressed: () {}),
|
||||
// sizedBoxHeight(30.h),
|
||||
// CustomButton2(text: "Login", onPressed: () {}),
|
||||
// sizedBoxHeight(50.h),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ]),
|
||||
// ),
|
||||
// );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,12 @@ class RouteName {
|
||||
static const String onboarding1 = '/onboarding1';
|
||||
static const String loginScreen = '/loginScreen';
|
||||
static const String nointernet = '/nointernet';
|
||||
|
||||
static const String signupscreen = '/signupscreen';
|
||||
static const String verifyusercreen = '/verifyuser';
|
||||
static const String tellusindividualscreen = '/tellusindividualscreen';
|
||||
static const String tellusbusinessscreen = '/tellusbusinessscreen';
|
||||
|
||||
static const String communityScreen = '/communityScreen';
|
||||
static const String mainscreen = '/mainscreen';
|
||||
static const String sidemenu = '/sidemenu';
|
||||
@@ -23,8 +29,4 @@ class RouteName {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,4 +1,7 @@
|
||||
import 'package:get/get_navigation/src/routes/get_route.dart';
|
||||
|
||||
import 'package:regroup/Login/View/loginscreen.dart';
|
||||
|
||||
import 'package:regroup/Common/controller/MainScreen.dart';
|
||||
import 'package:regroup/Feed%20Module/Main_Screens/Community/Community.dart';
|
||||
import 'package:regroup/Feed%20Module/Main_Screens/Community/CycleScreen.dart';
|
||||
@@ -11,7 +14,12 @@ import 'package:regroup/Feed%20Module/sidemenu/Community/MyCommunity/View/Commun
|
||||
import 'package:regroup/Feed%20Module/sidemenu/Community/MyCommunity/View/MyCommunity.dart';
|
||||
import 'package:regroup/Feed%20Module/sidemenu/SavedPosts/SavedPosts.dart';
|
||||
import 'package:regroup/Feed%20Module/sidemenu/sidemenu.dart';
|
||||
|
||||
import 'package:regroup/Utils/Common/NoInternet.dart';
|
||||
import 'package:regroup/onboarding/Signup/View/Business/tellusbusiness.dart';
|
||||
import 'package:regroup/onboarding/Signup/View/Individual/tellusindividual.dart';
|
||||
import 'package:regroup/onboarding/Signup/View/signupscreen.dart';
|
||||
import 'package:regroup/onboarding/Signup/View/verifyuser.dart';
|
||||
import 'package:regroup/onboarding/onboarding1.dart';
|
||||
import 'package:regroup/onboarding/splashscreen.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
@@ -30,6 +38,29 @@ class AppRoutes {
|
||||
name: RouteName.nointernet,
|
||||
page: () => const NoInternet(),
|
||||
),
|
||||
|
||||
GetPage(
|
||||
name: RouteName.loginScreen,
|
||||
page: () => const LoginScreen(),
|
||||
),
|
||||
GetPage(
|
||||
name: RouteName.signupscreen,
|
||||
page: () => const SignupScreen(),
|
||||
),
|
||||
GetPage(
|
||||
name: RouteName.verifyusercreen,
|
||||
page: () => const VerifyuserScreenState(),
|
||||
),
|
||||
GetPage(
|
||||
name: RouteName.tellusindividualscreen,
|
||||
page: () => const TellusaboutIndividual(),
|
||||
),
|
||||
GetPage(
|
||||
name: RouteName.tellusbusinessscreen,
|
||||
page: () => const TellusaboutBusiness(),
|
||||
),
|
||||
|
||||
|
||||
GetPage(
|
||||
name: RouteName.communityScreen,
|
||||
page: () => const CommunityScreen(),
|
||||
@@ -80,3 +111,4 @@ class AppRoutes {
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -584,6 +584,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.2"
|
||||
pin_code_fields:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: pin_code_fields
|
||||
sha256: "4c0db7fbc889e622e7c71ea54b9ee624bb70c7365b532abea0271b17ea75b729"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.0.1"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -54,9 +54,13 @@ dependencies:
|
||||
device_info_plus: ^9.1.2
|
||||
permission_handler: ^11.3.1
|
||||
glassmorphism: ^3.0.0
|
||||
|
||||
pin_code_fields: ^8.0.1
|
||||
|
||||
dropdown_button2: ^2.3.9
|
||||
flutter_reaction_button: any
|
||||
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||