summaryrefslogtreecommitdiff
path: root/mobile/lib/signup.dart
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/lib/signup.dart')
-rw-r--r--mobile/lib/signup.dart81
1 files changed, 75 insertions, 6 deletions
diff --git a/mobile/lib/signup.dart b/mobile/lib/signup.dart
index 18a27ad..0650711 100644
--- a/mobile/lib/signup.dart
+++ b/mobile/lib/signup.dart
@@ -1,3 +1,5 @@
+import 'package:carpool/drawer.dart';
+import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:fluttertoast/fluttertoast.dart';
@@ -18,6 +20,8 @@ class _SignUpPageState extends State<SignUpPage> {
final FocusNode _focusNodeConfirmPassword = FocusNode();
final TextEditingController _controllerUsername = TextEditingController();
final TextEditingController _controllerPassword = TextEditingController();
+ final TextEditingController _controllerName = TextEditingController();
+ final TextEditingController _controllerPhoneNumber = TextEditingController();
final TextEditingController _corfirmPassword = TextEditingController();
bool _obscurePassword = true;
@@ -25,6 +29,8 @@ class _SignUpPageState extends State<SignUpPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
+ appBar: AppBar(title: const Text('Sign Up')),
+ drawer: CustomDrawer(),
backgroundColor: Colors.grey[300],
body: Form(
key: _formKey,
@@ -35,7 +41,7 @@ class _SignUpPageState extends State<SignUpPage> {
const SizedBox(height: 20),
Image.asset(
"assets/logo.png",
- height: 190,
+ height: 140,
),
Text(
"Welcome ",
@@ -137,6 +143,47 @@ class _SignUpPageState extends State<SignUpPage> {
return null;
},
),
+ const SizedBox(height: 10),
+ TextFormField(
+ controller: _controllerName,
+ keyboardType: TextInputType.name,
+ decoration: InputDecoration(
+ labelText: "Name",
+ border: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ ),
+ validator: (String? value) {
+ if (value == null || value.isEmpty) {
+ return "Please enter name.";
+ }
+ return null;
+ },
+ ),
+ const SizedBox(height: 10),
+ TextFormField(
+ controller: _controllerPhoneNumber,
+ keyboardType: TextInputType.number,
+ decoration: InputDecoration(
+ labelText: "Phone Number",
+ border: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ enabledBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(10),
+ ),
+ ),
+ validator: (String? value) {
+ if (value == null || value.isEmpty) {
+ return "Please enter phone number.";
+ }
+ return null;
+ },
+ ),
+ const SizedBox(height: 60),
const SizedBox(height: 60),
Column(
children: [
@@ -146,7 +193,7 @@ class _SignUpPageState extends State<SignUpPage> {
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
- backgroundColor: Color(0xFF355291),
+ backgroundColor: const Color(0xFF355291),
),
onPressed: () async {
if (_formKey.currentState?.validate() ?? false) {
@@ -154,10 +201,30 @@ class _SignUpPageState extends State<SignUpPage> {
await FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: _controllerUsername.text.trim(),
- password: _controllerPassword.text.trim())
- .then((value) =>
- Navigator.pushNamedAndRemoveUntil(
- context, "/", (route) => false));
+ password: _controllerPassword.text.trim());
+
+ FirebaseFirestore firestore =
+ FirebaseFirestore.instance;
+ User? user = FirebaseAuth.instance.currentUser;
+ CollectionReference collection =
+ firestore.collection('users');
+
+ Map<String, dynamic> data = {
+ 'name': _controllerName.text.trim(),
+ 'phoneNumber': _controllerPhoneNumber.text.trim(),
+ 'uid': user?.uid,
+ };
+
+ try {
+ // Add a new document with an automatically generated ID
+ await collection.add(data);
+ print('Document added successfully!');
+ } catch (e) {
+ print('Error adding document: $e');
+ }
+
+ Navigator.pushNamedAndRemoveUntil(
+ context, "/login", (route) => false);
} on FirebaseAuthException catch (e) {
Fluttertoast.showToast(
msg: e.message.toString(),
@@ -195,6 +262,8 @@ class _SignUpPageState extends State<SignUpPage> {
_controllerUsername.dispose();
_controllerPassword.dispose();
_corfirmPassword.dispose();
+ _controllerName.dispose();
+ _controllerPhoneNumber.dispose();
super.dispose();
}
}