#firebase #flutter #dart #google-cloud-firestore #admin
#firebase #flutter #дротик #google-облако-firestore #администратор
Вопрос:
Я хочу показать floatactionbutton только для администраторов в моем приложении, но как я могу это сделать, я не знаю. Не могли бы вы мне помочь? Кстати, когда я вхожу в свое приложение, мои данные обновляют то, что они есть. Я попробовал логический isAdmin (а также множество способов ввода и т. Д.), И после этого я установил вручную, но после этого он обновил false или удалил auto. снова…
Я просто хочу, чтобы если я администратор, то только я мог использовать эту кнопку, вот и все.
мои коды :
return Scaffold(
floatingActionButton: provider.isAdmin == 1 ? CreateNewShop() : Container(),
body: HomePageBody());
а также коды входа в Google:
Future login() async {
isSigningIn = true;
final user = await googleSignIn.signIn();
if (user == null) {
isSigningIn = false;
return;
} else {
final googleAuth = await user.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
await FirebaseAuth.instance.signInWithCredential(credential);
final existingUserDocs = await FirebaseFirestore.instance
.collection('Users')
.where('uid', isEqualTo: user.id)
.get();
final uid = FirebaseAuth.instance.currentUser.uid;
if (existingUserDocs.docs.isEmpty) {
FirebaseFirestore.instance.collection('Users').doc(uid).set({
'email': user.email,
'username': user.displayName,
'uid': uid,
'userPhotoUrl': user.photoUrl,
});
} else {
return null;
}
isSigningIn = false;
}
}
Комментарии:
1. Как вы настраиваете isAdmin и где вы его объявляете?
2. я создал GoogleSignIn в changenotifierprovider и использовал часть входа. Я имею в виду, что если мой uid существует в системе, тогда я могу войти в систему, но я не вхожу в систему, тогда я автоматически регистрируюсь с помощью моей информации Google. Я добавляю здесь isAdmin, но не могу добиться никакого успеха…
Ответ №1:
Используйте Visibility
виджет, чтобы скрыть и отобразить виджет
Для получения дополнительной информации посетите класс видимости Flutter
floatingActionButton: Visibility(
visible: provider.isAdmin == 1,
child: FloatingActionButton(
onPressed: (){},
child: Icon(Icons.add),
),
),
Комментарии:
1. да, но я сказал, что не могу выполнить provider.isAdmin == 1, потому что, когда я захожу в приложение, вся моя информация переписывается или устанавливается. Я написал выше коды.
2. вы должны сохранить информацию об isAdmin в SharedPreference, тогда вы сможете получить доступ к информации об isAdmin, когда захотите.
3. любой другой способ ??
4. SharedPreference — лучший способ, я думаю
5. а также я использую «?» эта вещь для видимости. Мне просто нужна другая система, но как я не знаю