16

我正在尝试在 Flutter for Web 应用程序中使用 Firebase 身份验证实现登录功能。我已经可以使用 Firestore 在同一个应用程序中存储/提取数据而无需登录。

执行应用程序时,显示错误“NoSuchMethodError: 试图调用非函数,例如 null: 'dart.global.firebase.auth'”

我认为错误是由调用auth()方法引起的。

你能告诉我应该如何解决它吗?或者,Flutter for web 还不支持 Firebase 身份验证吗?

导入的 firebase.dart。 https://firebase.google.com/docs/reference/js/firebase

import 'package:firebase/firebase.dart';

使用 auth() 初始化对象并从参数调用登录方法。

final Auth _auth = auth();

Future<UserCredential> signIn(String email, String password) async {
  final UserCredential user = await _auth.signInAndRetrieveDataWithEmailAndPassword(email, password);
  return user;
}
4

4 回答 4

34

您还需要将其包含在您的 index.html 文件中:

<script src="https://www.gstatic.com/firebasejs/7.8.0/firebase-auth.js"></script>
于 2020-02-05T15:55:22.037 回答
1

在我的情况下,我不得不刷新缓存,用 R 重新加载/热重新加载 dart 是不够的,所以继续 chrome 并同时按 CTRL+SHIFT+R 以清除缓存。

于 2021-01-22T02:01:18.440 回答
0

这是因为您没有authStateChanges在 index.html 文件中调用该函数,在这种情况下为: 。除了添加 script: 之外<script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-auth.js"></script>,您还需要添加import { authStateChanges } from "https://www.gstatic.com/firebasejs/8.6.1/firebase-auth.js";到 Firebase SDK 导入部分 ( <script type="module">...)。

于 2022-01-16T00:45:28.383 回答
0

对于任何可能也遇到过我的情况的人。我意识到我添加了 <script src="https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js"></script> 两次这一行,所以我删除了一个,保存并运行flutter clean

于 2021-10-27T11:14:18.837 回答