Как я могу установить кнопку администратора для администраторов в flutter

#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. а также я использую «?» эта вещь для видимости. Мне просто нужна другая система, но как я не знаю