import 'package:flutter/material.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import '../constants.dart'; import 'edit_profile_page.dart'; class UserProfilePage extends StatefulWidget { const UserProfilePage({super.key}); @override State createState() => _UserProfilePageState(); } class _UserProfilePageState extends State { String? profileImageUrl; // Track the profile image URL bool isLoading = true; late Map userData; @override void initState() { super.initState(); _loadUserData(); // Load user data on initialization } Future _loadUserData() async { DocumentSnapshot userDoc = await FirebaseFirestore.instance .collection(Constants.dbCollectionUsers) .doc(FirebaseAuth.instance.currentUser!.uid) .get(); setState(() { userData = userDoc.data() as Map; // Initialize the profile image URL profileImageUrl = userData[Constants.dbFieldUsersProfilePic]; // Set loading to false once data is loaded isLoading = false; }); } void editNameInfo() async { final updatedUserData = await Navigator.push( context, MaterialPageRoute( builder: (context) => EditProfilePage(userData: userData), ), ); if (updatedUserData != null) { setState(() { profileImageUrl = updatedUserData[Constants.dbFieldUsersProfilePic]; userData[Constants.dbFieldUsersName] = updatedUserData[Constants.dbFieldUsersName]; userData[Constants.dbFieldUsersBio] = updatedUserData[Constants.dbFieldUsersBio]; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('User Profile'), ), body: isLoading ? const Center(child: CircularProgressIndicator()) : Padding( padding: const EdgeInsets.all(16.0), child: SingleChildScrollView( child: Column( //crossAxisAlignment: CrossAxisAlignment.start, children: [ Align( alignment: Alignment.bottomRight, child: OutlinedButton.icon( label: const Text('Edit'), icon: const Icon(Icons.edit), onPressed: editNameInfo, ), ), CircleAvatar( radius: 50, backgroundImage: profileImageUrl != null ? NetworkImage(profileImageUrl!) : null, child: profileImageUrl == null ? const Icon(Icons.person, size: 50) : null, ), const SizedBox(height: 16), Text(userData[Constants.dbFieldUsersName] ?? 'Name', style: const TextStyle(fontSize: 24)), Text(userData[Constants.dbFieldUsersEmail] ?? 'Email', style: const TextStyle(fontSize: 16)), const SizedBox(height: 16), Align( alignment: Alignment.centerLeft, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text('Bio'), Text(userData[Constants.dbFieldUsersBio] ?? 'N/A', style: const TextStyle(fontSize: 16)), ], ), ), const SizedBox(height: 16), Divider( color: Theme.of(context).colorScheme.primary, ), const SizedBox(height: 16), ], ), ), ), ); } }