Flutter -App, die nicht ordnungsgemäß zwischen den Bildschirmen des Kunden- und Dienstanbieters unterscheidetAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Flutter -App, die nicht ordnungsgemäß zwischen den Bildschirmen des Kunden- und Dienstanbieters unterscheidet

Post by Anonymous »

Ich habe Probleme mit meiner Flutter -App, die verschiedene Bildschirme für Kunden und Dienstleister nicht ordnungsgemäß rendert. Hier sind die Schlüsselprobleme: < /p>

[*] 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...
);
}
}
Homepage.dart:

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!);
}
}
loginScreen.dart:
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
Screen Rendering Issues:

[*]BarberHomePage specific features not rendering:
  • Dashboard statistics (appointments, revenue)
  • Quick action buttons (Add Appointment, View Schedule)
  • Recent appointments list
  • Service management options
[*]CustomerHomePage specific features not rendering:
  • 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)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post