【问题标题】:How to change old dependency code to new dependency code?如何将旧的依赖代码更改为新的依赖代码?
【发布时间】: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()));
          }
        }
      });
    });
  }
}

以下是 Cloud Firestore 数据图片:

我正在使用电子邮件和密码身份验证。用户 id 和 firestore 中的 uid 相同。你可以找到下面的图片。

【问题讨论】:

  • 运行代码后是否收到任何特定的错误消息?如果是,请说明您遇到的确切错误。
  • 请看添加的图片。它显示红色下划线。

标签: firebase flutter google-cloud-firestore firebase-authentication


【解决方案1】:
  • FirebaseAuth.instance.currentUser 不再是 Future&lt;User&gt; 它是直接的 User? 对象
  • where条件后使用.get()函数获取快照

【讨论】:

猜你喜欢
  • 2020-11-14
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 2020-08-24
相关资源
最近更新 更多