import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:flutter_application_1/Project/ProfilePage/EditProfilePage/edit_profile_page.dart'; import 'package:flutter_application_1/Project/ProfilePage/widgets/appbar_widget.dart'; import 'package:string_validator/string_validator.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import '../../utils/colors.dart'; class EditNameFormPage extends StatefulWidget { const EditNameFormPage({Key? key}) : super(key: key); @override EditNameFormPageState createState() { return EditNameFormPageState(); } } class EditNameFormPageState extends State { final _formKey = GlobalKey(); final CollectionReference usersCollection = FirebaseFirestore.instance.collection('users'); final _firstNameController = TextEditingController(); final _lastNameController = TextEditingController(); bool isValid = true; @override void initState() { super.initState(); _firstNameController.addListener(() {}); _lastNameController.addListener(() {}); } @override void dispose() { _firstNameController.dispose(); _lastNameController.dispose(); super.dispose(); } void clearForm() { _firstNameController.clear(); _lastNameController.clear(); } @override Widget build(BuildContext context) { return Scaffold( appBar: buildAppBar(context), body: Form( key: _formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.start, children: [ const SizedBox( width: 330, child: Text( "Enter Your New Name", style: TextStyle( fontSize: 25, fontWeight: FontWeight.bold, ), )), Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Padding( padding: const EdgeInsets.fromLTRB(0, 40, 16, 0), child: SizedBox( height: 100, width: 150, child: TextFormField( // Handles Form Validation for First Name validator: (value) { if (value == null || value.isEmpty) { return 'Please enter your first name'; } else if (!isAlpha(value)) { return 'Only Letters Please'; } return null; }, decoration: const InputDecoration(labelText: 'First Name'), controller: _firstNameController, ), ), ), Padding( padding: const EdgeInsets.fromLTRB(0, 40, 16, 0), child: SizedBox( height: 100, width: 150, child: TextFormField( // Handles Form Validation for Last Name validator: (value) { if (value == null || value.isEmpty) { return 'Please enter your last name'; } else if (!isAlpha(value)) { return 'Only Letters Please'; } return null; }, decoration: const InputDecoration(labelText: 'Last Name'), controller: _lastNameController, ), ), ), ], ), Padding( padding: const EdgeInsets.only(top: 150), child: Align( alignment: Alignment.bottomCenter, child: SizedBox( width: 330, height: 50, child: ElevatedButton( onPressed: () async { setState(() { isValid = _formKey.currentState!.validate(); }); if (isValid) { // Get the user ID of the current user final String? uid = FirebaseAuth.instance.currentUser?.uid; if (uid != null) { // Get the DocumentReference of the user's document final DocumentReference userDocRef = usersCollection.doc(uid); final String firstName = _firstNameController.text.trim(); final String lastName = _lastNameController.text.trim(); // Update the user's document with the new values await userDocRef.update({ 'firstName': firstName, 'lastName': lastName, }); // Navigate back to the previous screen // ignore: use_build_context_synchronously Navigator.push( context, MaterialPageRoute( builder: ((context) => const EditProfilePage()))); } } else { // Display an error message ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Error: Please enter First and Last Name'), duration: Duration(seconds: 3), ), ); } }, style: ButtonStyle( backgroundColor: MaterialStateProperty.all(kGreenColor), ), child: const Text( 'Update', style: TextStyle(fontSize: 15), ), ), ), ), ) ], ), ), ); } }