diff options
Diffstat (limited to 'mobile/lib/signup.dart')
| -rw-r--r-- | mobile/lib/signup.dart | 81 |
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(); } } |
