firebase - 未定义类 'FirebaseUser'

标签 firebase flutter dart firebase-authentication google-authentication

我是Flutter的新手。我的 Firebase Auth / Google Auth 有问题
未定义FirebaseUser的
码:

FirebaseAuth _auth = FirebaseAuth.instance;
GoogleSignIn googleSignIn = GoogleSignIn();

Future<FirebaseUser> currentUser() async { // The Issue is here in the Future<>
  final GoogleSignInAccount account = await googleSignIn.signIn();
  final GoogleSignInAuthentication authentication =
      await account.authentication;

  final GoogleAuthCredential credential = GoogleAuthProvider.getCredential(
      idToken: authentication.idToken, accessToken: authentication.accessToken);

  final AuthResult authResult = await _auth.signInWithCredential(credential);
  final FirebaseUser user = authResult.user; // and here as I can't define this FirebaseUser object to return

  return user;
}
Pubspec.yml
dependencies:
  flutter:
    sdk: flutter


  cupertino_icons: ^0.1.3
  firebase_auth: ^0.18.0
  location: ^3.0.2
  page_transition: ^1.1.6
  google_sign_in: ^4.5.1
  flutter_facebook_login: ^3.0.0
  firebase_database: ^4.0.0
我也面临着与AuthResult相同的问题
final AuthResult authResult = await _auth.signInWithCredential(credential);

最佳答案

firebase_auth版本0.18.0开始:
在最新版本的firebase_auth中,类FirebaseUser更改为User,而类AuthResult更改为UserCredentail。因此,将您的代码更改为以下内容:

    Future<User> currentUser() async {
      final GoogleSignInAccount account = await googleSignIn.signIn();
      final GoogleSignInAuthentication authentication =
          await account.authentication;

      final GoogleAuthCredential credential = GoogleAuthProvider.credential(
          idToken: authentication.idToken,
          accessToken: authentication.accessToken);

      final UserCredential authResult =
          await _auth.signInWithCredential(credential);
      final User user = authResult.user;

      return user;
    }
FirebaseUser更改为UserAuthResult更改为UserCredentialGoogleAuthProvider.getCredential()更改为GoogleAuthProvider.credential()
通知用户登录状态更改的onAuthStateChanged已替换为authStateChanges()currentUser()是一种检索当前登录用户的方法,已被currentUser属性取代,并且不再返回Future<FirebaseUser>
以上两种方法的示例:
FirebaseAuth.instance.authStateChanges().listen((event) {
   print(event.email);
});
和:
var user = FirebaseAuth.instance.currentUser;
print(user.uid);

弃用UserUpdateInfo类的firebaseUser.updateProfile方法。
例:
Future updateName(String name, FirebaseUser user) async {
  var userUpdateInfo = new UserUpdateInfo();
  userUpdateInfo.displayName = name;
  await user.updateProfile(userUpdateInfo);
  await user.reload(); 
}
现在
import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
  firebaseUser.updateProfile(displayName: name);
  await firebaseUser.reload();
}

关于firebase - 未定义类 'FirebaseUser',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63567488/

相关文章:

android - toLowerCase 上的 NullPointer 但我不在任何地方使用该方法

debugging - VS Code 中的函数调试

flutter - 有没有办法在 flutter 上创建类似可编辑网格的电子表格?

unit-testing - Flutter 中的单元测试通过 BuildContext

dart - 如何使用日期选择器解决底部溢出问题

node.js - 当我尝试在本地运行函数时 firebase 显示错误

firebase - 如何删除 Firebase 中的用户帐户?

flutter - 用 Dart 条件设置变量

flutter - flutter 中的 Paypal 集成

dart - Dart/Flutter按位移位运算符返回不同的值