я пытаюсь настроить авторизацию на основе ролей (регулярные пользователи и подписанные пользователи) и на основе ролей, которые пользователи перенаправляют на разные экраны. Я застрял. Я пробовал разные решения и видел каждый учебник о концепции. я понимаю, как работает эта концепция, но мне очень трудно настроить ее в своем коде. Я не уверен, где объявить подписанных пользователей и как создать функцию и как их перемещать! благодарен за любую помощь! так выглядит мой код!
// это мои службы авторизации
static void signUpUser(
BuildContext context, String name, String email, String password) async {
try {
AuthResult authResult = await _auth.createUserWithEmailAndPassword(
email: email,
password: password
);
FirebaseUser signedInUser = authResult.user;
if (signedInUser != null) {
_firestore.collection('/users').document(signedInUser.uid).setData({
'name': name,
'email': email,
'profileImageUrl': '',
});
// страница регистрации
final _formKey = GlobalKey<FormState>();
String _name, _email, _password;
_submit() {
if(_formKey.currentState.validate()){
_formKey.currentState.save();
AuthService.signUpUser(context, _name, _email, _password);
}
}
// my main.dart
Widget _getScreenId() {
return StreamBuilder<FirebaseUser>(
stream: FirebaseAuth.instance.onAuthStateChanged,
builder: (BuildContext context, snapshot) {
if (!snapshot.hasData) {
Provider.of<UserData>(context).currentUserId = snapshot.data.uid;
return LoginScreen();
} else {
return HomeScreen();
}
},
);
}
// импорт пользовательских моделей 'package: cloud_firestore / cloud_firestore.dart';
class User {
final String id;
final String name;
final String profileImageUrl;
final String email;
final String bio;
User({
this.id,
this.name,
this.profileImageUrl,
this.email,
this.bio
});