Приложение Flutter не соответствует надлежащей дифференциации между экранами клиента и поставщика услугAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Приложение Flutter не соответствует надлежащей дифференциации между экранами клиента и поставщика услуг

Сообщение Anonymous »

У меня есть проблемы с моим приложением Flutter, который не соответствует различным экранам для клиентов и поставщиков услуг. Вот ключевые проблемы: < /p>

[*] Электронные письма клиентов могут войти в систему для входа в поставщики услуг < /li>
Различные экраны клиентов и парикмахерских не являются должным образом < /li>
Дифференциация пользователя не работает, как ожидается < /li>
< /ol>
< /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p>. /> usermodel.dart:образной

Код: Выделить всё

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:

Код: Выделить всё

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>
Приложение использует аутентификацию Firebase и Firestore для управления пользователями. Тип пользователя хранится в Firestore с помощью IsserviceProvider < /code> Boolean Field. < /P>
Я пробовал: < /p>

Создание eSserviceProvider в качестве необходимого поля в usermodel < /li>
Добавление правильных состояний загрузки. Flow < /li>
Перезагружая пользовательские данные на Homepage init < /li>
Обеспечение правильной обработки ошибок в входе в систему и навигации < /li>
< /ol>
Текущее поведение: < /p>
  • Когда клиент входит в систему с их электронной почтой, они иногда восстанавливаются в Brber> < /> < /> < /> < /> < /li>. Приложение не последовательно отображает правильный экран, основанный на типе пользователя < /li>
    Журналы отладки показывают, что IsserviceProvider иногда не установлен или полученным < /li>
    BarberhomePage и CustomerHomePage Components не вводя в свои специфические функции < /li>
    Уличие для каждого пользовательского типа (такие варианты клиентских пасторов). Появление < /li>
    < /ul>
    Проблемы рендеринга экрана: < /p>

    Особенности специфики для бортометражных. Расписание) < /li>
    Недавние списки назначений < /li>
    Варианты управления услугами < /li>
    < /ul>
    < /li>
    Customerhomepage Specifice. Интерфейс < /li>
    Раздел профиля клиента < /li>
    История встреч < /li>
    < /ul>
    < /li>
    Проблемы с общим рендерингом: < /p>

    . /> Навигация между экранами является несовместимой < /li>
    Некоторые элементы пользовательского интерфейса появляются в неправильном пользовательском контексте < /li>
    < /ul>
    < /li>
    < /ol>
    Ожидаемое поведение: < /p>

    . BarberhomePage < /li>
    Поле IsserviceProvider должно быть правильно установлено во время регистрации и получено во время входа в систему < /li>
    < /ul>
    Журналы ошибок:
    i /flutter (21999): обнаруженная ошибка в Succeplated): 2199 (2199 (2199 (2199 (2199). CAI3HD5KGXTRLF4IPEJWM9FUPMS2
    I /Flutter (21999): FireBaseauthexception во время входа в систему: extred -user - cai3hd5kgxtrlf4ipejwm9fupms2
    i /rhrumptr CAI3HD5KGXTRLF4IPEJWM9FUPMS2 < /p>
    Окружающая среда: < /p>

    Флэттерная версия: 3.10.0 < /li>
    Firebase Версия: Firebase_core: ^2.15.0, Firebase_auth: ^4.7.2, gistbase_core: ^2.15.0, firebase_auth: ^4.7.2, cootbase_core: ^2. ^4.8.4
  • Платформа: Android (SM A125F)


Подробнее здесь: https://stackoverflow.com/questions/795 ... provider-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»