[*] Kunden -E -Mails können sich bei Service Provider Anmeldungen anmelden < /li>
Verschiedene Kunden- und Friseurbildschirme machen nicht ordnungsgemäß. />
usModel.dart:
Code: Select all
class UserModel {
final String uid;
final String name;
final String fullName;
final String email;
final String? phoneNumber;
final bool isServiceProvider;
// other fields...
UserModel({
required this.uid,
required String name,
String? fullName,
required this.email,
this.phoneNumber,
required this.isServiceProvider,
// other parameters...
}) : this.name = name,
this.fullName = fullName ?? name;
Map toMap() {
return {
'uid': uid,
'name': name,
'fullName': fullName,
'email': email,
'phoneNumber': phoneNumber,
'isServiceProvider': isServiceProvider,
// other fields...
};
}
factory UserModel.fromMap(Map map) {
return UserModel(
uid: map['uid'] ?? '',
name: map['name'] ?? map['fullName'] ?? '',
fullName: map['fullName'] ?? map['name'] ?? '',
email: map['email'] ?? '',
phoneNumber: map['phoneNumber'],
isServiceProvider: map['isServiceProvider'] ?? false,
// other fields...
);
}
}
Code: Select all
class _HomePageState extends State {
final AuthService _authService = AuthService();
final FirestoreService _firestoreService = FirestoreService();
int _selectedIndex = 0;
bool _isLoading = false;
UserModel? _userData;
@override
void initState() {
super.initState();
_userData = widget.userData;
_loadUserData();
}
Future _loadUserData() async {
try {
setState(() => _isLoading = true);
final updatedUserData = await _firestoreService.getUserById(_userData!.uid);
if (updatedUserData != null) {
setState(() {
_userData = updatedUserData;
_isLoading = false;
});
}
} catch (e) {
print('Error loading user data: $e');
setState(() => _isLoading = false);
}
}
@override
Widget build(BuildContext context) {
if (_isLoading || _userData == null) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
// Print debug information
print('User type: ${_userData!.isServiceProvider ? 'Barber' : 'Customer'}');
print('User data: ${_userData!.toMap()}');
return _userData!.isServiceProvider
? BarberHomePage(userData: _userData!)
: CustomerHomePage(userData: _userData!);
}
}
void _getUserDataAndNavigate(String uid) async {
try {
final firestoreService = FirestoreService();
final userData = await firestoreService.getUserById(uid);
if (userData != null) {
print('User data loaded: ${userData.toMap()}');
print('Is service provider: ${userData.isServiceProvider}');
if (mounted) {
// Navigate based on user type
if (userData.isServiceProvider) {
print('Navigating to BarberHomePage');
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => BarberHomePage(
userData: userData,
),
),
);
} else {
print('Navigating to CustomerHomePage');
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => CustomerHomePage(
userData: userData,
),
),
);
}
}
} else {
print("No user data found for UID: $uid");
// Error handling...
}
} catch (e) {
print("Error getting user data: $e");
// Error handling...
}
}
< /code>
Die App verwendet Firebase Authentication und Firestore für die Benutzerverwaltung. Der Benutzerart wird in Firestore mit einem isServiceProvider < /code> booleschen Feld gespeichert. Flow < /li>
Benutzerdaten auf Homepage init < /li>
Sicherstellen, dass ein ordnungsgemäßes Fehlerbehebung in Login and Navigation < /li>
< /ol>
aktuelles Verhalten: < /p>
- , in die Kunde log. App rendert den richtigen Bildschirm nicht konsequent basierend auf dem Benutzertyp < /li>
Debug -Protokolle zeigen, dass IsServiceProvider manchmal nicht ordnungsgemäß eingestellt oder abgerufen wird. appearing
[*]BarberHomePage specific features not rendering:
- Dashboard statistics (appointments, revenue)
- Quick action buttons (Add Appointment, View Schedule)
- Recent appointments list
- Service management options
- Barber search/browse functionality
- Appointment booking interface
- Abschnitt des Kundenprofils < /li>
Terminverlauf < /li>
< /> < /li>
Häufige Rendering -Probleme: < /p>
Einige UI -Elemente werden im falschen Benutzerkontext erscheinen. BarberHomepage < /li>
Das Feld isServiceProvider sollte während der Registrierung ordnungsgemäß eingestellt und während des Logins abgerufen werden. CaI3hd5kGxTrLF4ipEjwM9FUPmS2
I/flutter (21999): FirebaseAuthException during sign in: recovered-user - CaI3hd5kGxTrLF4ipEjwM9FUPmS2
I/flutter (21999): Using recovered user UID: CAI3HD5KGXTRLF4IPEJWM9FUPMS2 < /p>
Umgebung: < /p>
Flatternversion: 3.10.0 < /li>
Firebase -Version: Firebase_core: ^2.15.0, Firebase: ^4.7.2, Cloud_firest: Cloud. ^4.8.4 - Plattform: Android (SM A125F)