import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:telemednet/route_names.dart'; class PatientProfileScreen extends StatefulWidget { const PatientProfileScreen({super.key}); @override State createState() => _PatientProfileScreenState(); } class _PatientProfileScreenState extends State { final FirebaseAuth _auth = FirebaseAuth.instance; @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: Column( children: [ _buildProfileHeader(), _buildProfileOptions(), const Spacer(), _buildBottomNavBar(), ], ), ), ); } Widget _buildProfileHeader() { return Container( padding: const EdgeInsets.all(16), decoration: const BoxDecoration( gradient: LinearGradient( colors: [ Color(0xFF00BCD4), Color(0xFF2196F3), ], begin: Alignment.centerLeft, end: Alignment.centerRight, ), borderRadius: BorderRadius.only( bottomLeft: Radius.circular(20), bottomRight: Radius.circular(20), ), ), child: Row( children: [ Container( width: 60, height: 60, decoration: const BoxDecoration( color: Colors.white, shape: BoxShape.circle, ), child: const Center( child: Text( 'D', style: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, color: Colors.blue, ), ), ), ), const SizedBox(width: 16), const Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Dhansh A S', style: TextStyle( fontSize: 24, fontWeight: FontWeight.bold, color: Colors.white, ), ), Text( 'User profile is incomplete', style: TextStyle( fontSize: 14, color: Colors.white70, ), ), ], ), ), const Icon( Icons.chevron_right, color: Colors.white, size: 30, ), ], ), ); } Widget _buildProfileOptions() { return Container( margin: const EdgeInsets.all(16), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.1), spreadRadius: 1, blurRadius: 5, ), ], ), child: Column( children: [ _buildOptionTile( 'Medical Profile', Icons.medical_information_outlined, onTap: () {}, ), const Divider(height: 1), _buildOptionTile( 'Sign Out', Icons.logout, onTap: () { _signOut(); }, iconColor: Colors.blue, ), ], ), ); } Widget _buildOptionTile(String title, IconData icon, {required VoidCallback onTap, Color? iconColor}) { return ListTile( leading: Icon( icon, color: iconColor ?? Colors.grey, size: 24, ), title: Text( title, style: const TextStyle( fontSize: 16, fontWeight: FontWeight.w500, ), ), trailing: const Icon( Icons.chevron_right, color: Colors.grey, ), onTap: onTap, ); } Widget _buildBottomNavBar() { return BottomNavigationBar( type: BottomNavigationBarType.fixed, items: const [ BottomNavigationBarItem( icon: Icon(Icons.home_outlined), label: 'Home', ), BottomNavigationBarItem( icon: Icon(Icons.people_outline), label: 'Consult', ), BottomNavigationBarItem( icon: Icon(Icons.description_outlined), label: 'Records', ), BottomNavigationBarItem( icon: Icon(Icons.person), label: 'Profile', ), ], currentIndex: 3, selectedItemColor: Colors.blue, unselectedItemColor: Colors.grey, onTap: (index) { if (index != 3) { Navigator.of(context).pop(); } }, ); } Future _signOut() async { try { await _auth.signOut(); if (mounted) { Navigator.of(context).pushReplacementNamed(RouteNames.launch); } } catch (e) { print("Error signing out: $e"); if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Failed to log out. Please try again.')), ); } } } }