【发布时间】:2019-11-28 14:00:53
【问题描述】:
我正在尝试在 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;
}
【问题讨论】:
-
您是否调试过您的应用程序以查看您传递给 _auth 的值是否确实为空?您确定您的应用程序已连接到数据库,即:app_name 中没有错误,应用程序文件夹中有 google-services.json。
-
Ryk,感谢您的评论。实际上我无法确认 _auth 是否确实为空,因为应用程序在调用
auth()时崩溃了... 有什么方法可以确认吗?是的,我可以从应用程序中使用 Firestore 获取和放置数据。我不使用 google-services.json 或 GoogleService-Info.plist,因为该应用程序适用于网络。取而代之的是,我打电话给initializeApp()。 (firebase.google.com/docs/reference/js/firebase#initialize-app) -
你使用来自 pub 的包吗?如果您使用来自 pub 的包 firebase,您还应该将 firebase-app.js 插入您的页面。我没有在 web 上使用 Flutter,所以我不知道在你的应用中放置脚本的位置。
-
好的,谢谢。是的,我使用来自 pub 的包,并将 firebase-app.js 插入到我的 index.html 中。
<script src="https://www.gstatic.com/firebasejs/6.2.0/firebase-app.js"></script> -
仅供参考。我还在下面的 Reddit 中找到了一个讨论。但是我找不到我的代码和这段代码之间的区别...reddit.com/r/FlutterDev/comments/ccqgz0/…
标签: firebase flutter dart firebase-authentication flutter-web