簡體   English   中英

如何在 flutter 和 firebase 中使用不同類型的用戶登錄?

[英]How to sign in with different types of user in flutter and firebase?

我正在嘗試使用不同類型的用戶登錄,我有 firebase 身份驗證器來登錄並使用用戶和 userType 作為字段創建了一個數據庫,所以任何人都知道 function 顯示不同類型的用戶的不同界面? 我的代碼:

class _LoginScreenState extends State<LoginScreen> {
  var email;
  var password;
  var username;
  var gender;
  var userType;
  final usernameController = TextEditingController();
  final emailController = TextEditingController();
  final passwordController = TextEditingController();
  final firestoreInstance = Firestore.instance;
      void login() async {
        final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
        firebaseAuth
            .signInWithEmailAndPassword(
                email: emailController.text, password: passwordController.text)
            .then((result) {
          {
            Navigator.pushReplacementNamed(context, '/homepage');
          }
        }).catchError((err) {
          showDialog(
              context: context,
              builder: (BuildContext context) {
                return AlertDialog(
                  title: Text("Error"),
                  content: Text(err.message),
                  actions: [
                    FlatButton(
                      child: Text("Ok"),
                      onPressed: () {
                        Navigator.of(context).pop();
                      },
                    )
                  ],
                );
              });
        });
      }
      void getUserData() async {
        try {
          firestoreInstance
              .collection('Users')
              .document(usernameController.text)
              .get()
              .then((value) {
            setState(() {
              email = (value.data)['email'];
              password = (value.data)['password'];
              gender = (value.data)['gender'];
              username = (value.data)['username'];
              userType = (value.data)['userType'];
            });
          });
        } catch (e) {
          print(e.toString);
        }
      }

如果您想在登錄后導航到其他頁面,則類似於:

final FirebaseAuth firebaseAuth = FirebaseAuth.instance;
firebaseAuth
    .signInWithEmailAndPassword(
        email: emailController.text, password: passwordController.text)
    .then((result) {
  firestoreInstance
      .collection('Users')
      .document(usernameController.text)
      .get()
      .then((value) {
      var userType = (value.data)['userType'];
      if (userType == "firstType") {
        Navigator.pushReplacementNamed(context, '/homepage');
      }
      else if (userType == "secondType") {
        Navigator.pushReplacementNamed(context, '/anotherpage');
      }
    });
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM