【发布时间】:2021-12-03 21:36:09
【问题描述】:
我在带有 firebaseAuth 和 firestore 的 Flutter Web 应用程序中使用以下依赖项:
firebase_core: ^1.7.0
firebase_auth: ^3.1.3
cloud_firestore: ^2.5.3
以下是 web/index.html 上的脚本版本:
<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js"></script>
我想在用户使用凭据登录后在屏幕之间导航。我很累下面的方法,但它不起作用。无法使用然后FirebaseAuth.instance.currentUser!.then((user) {和.getDocuments().where('uid', isEqualTo: user.uid).getDocuments()如何解决这个问题。
实际上,我想在获取保存在 firestore 用户数据中的用户角色后打开管理屏幕。因此,在这种情况下,当前登录用户的用户 ID 应该与存储在 Firestore 中的文档中的 uid 字段匹配。然后它应该将角色与角色字段匹配。供参考,请找到图片。
我正在尝试以下代码:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:webfire/admin_screen.dart';
import 'package:webfire/home_screen.dart';
import 'package:flutter/widgets.dart';
class UserManagement {
signOut() {
FirebaseAuth.instance.signOut();
}
//FirebaseFirestore firestore = FirebaseFirestore.instance;
authorizeAdmin(BuildContext context) {
FirebaseAuth.instance.currentUser!.then((user) {
FirebaseFirestore.instance
.collection('users')
.where('uid', isEqualTo: user.uid)
.getDocuments()
.then((docs) {
if (docs.documents[0].exists) {
if (docs.documents[0].data['role'] == 'admin') {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) => const AdminScreen()));
} else if (docs.documents[0].data['role'] == 'user') {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) => const HomeScreen()));
}
}
});
});
}
}
【问题讨论】:
-
运行代码后是否收到任何特定的错误消息?如果是,请说明您遇到的确切错误。
-
请看添加的图片。它显示红色下划线。
标签: firebase flutter google-cloud-firestore firebase-authentication