class SignUp extends StatefulWidget {
const SignUp({Key? key}) : super(key: key);
@override
State<SignUp> createState() => _SignUpState();
}
class _SignUpState extends State<SignUp> {
var emailController = TextEditingController();
var passwordController = TextEditingController();
/* var docId = FirebaseFirestore.instance.collection('users').doc().id; */
final TextEditingController _usernameController = TextEditingController();
final TextEditingController _phoneNumberController = TextEditingController();
final TextEditingController _companyNameController = TextEditingController();
final FirebaseAuth auth = FirebaseAuth.instance;
@override
Widget build(BuildContext context) {
String docId;
docId = emailController.text;
final User? user = auth.currentUser;
double w = MediaQuery.of(context).size.width;
double h = MediaQuery.of(context).size.height;
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: Colors.white,
body: Column(
children: [
Container(
width: w,
height: h * 0.27,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/loginsignupheader.png"),
fit: BoxFit.fitWidth,
),
),
),
Container(
margin: const EdgeInsets.only(left: 30, right: 20),
width: w,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Text(
'Sign up for an account',
style: TextStyle(fontSize: 25, color: Colors.grey),
),
const SizedBox(height: 35),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(30),
boxShadow: [
BoxShadow(
blurRadius: 10,
spreadRadius: 7,
offset: const Offset(1, 1),
color: Colors.grey.withOpacity(0.2))
]),
child: TextField(
controller: _usernameController,
decoration: InputDecoration(
hintText: 'Username',
prefixIcon: const Icon(Icons.person),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
),
const SizedBox(height: 35),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(30),
boxShadow: [
BoxShadow(
blurRadius: 10,
spreadRadius: 7,
offset: const Offset(1, 1),
color: Colors.grey.withOpacity(0.2))
]),
child: TextField(
controller: _companyNameController,
decoration: InputDecoration(
hintText: 'Company Name',
prefixIcon: const Icon(Icons.business_center),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
),
const SizedBox(height: 35),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(30),
boxShadow: [
BoxShadow(
blurRadius: 10,
spreadRadius: 7,
offset: const Offset(1, 1),
color: Colors.grey.withOpacity(0.2))
]),
child: TextField(
controller: _phoneNumberController,
decoration: InputDecoration(
hintText: 'Phone Number',
prefixIcon: const Icon(Icons.phone),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
),
const SizedBox(height: 35),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(30),
boxShadow: [
BoxShadow(
blurRadius: 10,
spreadRadius: 7,
offset: const Offset(1, 1),
color: Colors.grey.withOpacity(0.2))
]),
child: TextField(
controller: emailController,
decoration: InputDecoration(
hintText: 'Email',
prefixIcon: const Icon(Icons.email_outlined),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
),
const SizedBox(height: 35),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(30),
boxShadow: [
BoxShadow(
blurRadius: 10,
spreadRadius: 7,
offset: const Offset(1, 1),
color: Colors.grey.withOpacity(0.2))
]),
child: TextField(
controller: passwordController,
obscureText: true,
decoration: InputDecoration(
hintText: 'Password',
prefixIcon: const Icon(Icons.password),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
borderSide: const BorderSide(
color: Colors.white, width: 1.0)),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30),
),
),
),
),
],
),
),
const SizedBox(
height: 50,
),
GestureDetector(
onTap: () async {
AuthController.instance.register(
emailController.text.trim(), passwordController.text.trim());
FirebaseFirestore.instance.collection('users').doc(docId).set({
'username': _usernameController.text,
'phone': _phoneNumberController.text,
'company_name': _companyNameController.text,
'email': emailController.text
});
},
child: Container(
width: w * .5,
height: h * .06,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(30),
image: const DecorationImage(
image: AssetImage("assets/button.png"),
fit: BoxFit.cover,
),
),
child: const Center(
child: Text(
'Sign Up',
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color: Colors.white),
),
)),
),
SizedBox(height: w * 0.1),
RichText(
text: TextSpan(
text: "Already have an account?",
style: const TextStyle(color: Colors.grey, fontSize: 20),
children: [
TextSpan(
text: " Login",
style: const TextStyle(
color: Colors.grey,
fontSize: 20,
fontWeight: FontWeight.bold),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const Login()));
}),
])),
],
),
);
}
}