【问题标题】:Unable to retrieve user from FirebaseUser Flutter无法从 FirebaseUser Flutter 检索用户
【发布时间】:2020-12-14 14:27:58
【问题描述】:

这里是 auth.dart

class AuthService implements AuthImplementaion {   
  final FirebaseAuth _auth = FirebaseAuth.instance;

  User _userFromFirebaseUser(FirebaseUser user) {
    return user != null ? User(uid: user.uid) : null;
  }

  Stream<User> get user {
    return _auth.onAuthStateChanged
        //.map((FirebaseUser user) => _userFromFirebaseUser(user));
        .map(_userFromFirebaseUser);
  }

  Future signInWithEmailAndPassword(String email, String password) async {
    try {
      UserCredential result = await _auth.signInWithEmailAndPassword(
          email: email, password: password);
      FirebaseUser user = result.user;
      return user;
    } catch (error) {
      print(error.toString());
      return null;
    }
  }

Future registerWithEmailAndPassword(String email, String password) async {
    try {
      UserCredential result = await _auth.createUserWithEmailAndPassword(
          email: email, password: password);
      // ignore: deprecated_member_use
      FirebaseUser user = result.user;
      return _userFromFirebaseUser(user);
    } catch (error) {
      print(error.toString());
      return null;
    }
  }
  Future signOut() async {
    try {
      return await _auth.signOut();
    } catch (error) {
      print(error.toString());
      return null;
    }
  }
}

user.dart

class User {
  final String uid;

  User({this.uid});
}

这是我遇到的错误。

名称“用户”在库中定义 'package:example/model/user.dart' 和 '包:firebase_auth/firebase_auth.dart'。 尝试对其中一个导入指令使用“作为前缀”,或者对除一个导入之外的所有指令隐藏名称。

【问题讨论】:

  • User 在两个地方定义,错误消息暗示你已经导入了两个地方。选择一个。
  • 导入 'package:example/model/user.dart';导入“包:firebase_auth/firebase_auth.dart”;这是我正在使用的两个包。我已经定义了用户模型以在任何我想要的地方访问用户。
  • ...好的。您不能两次导入相同的名称。
  • 我知道,但是当我将名称 user 更改为 myUser 时,它会显示错误 -> type '(FirebaseUser) => MyUser' is not a subtype of type '(User) => MyUser'

标签: android firebase flutter dart firebase-authentication


【解决方案1】:

由于两个包都包含 User 类,因此您必须使用 as 前缀:

import 'package:firebase_auth/firebase_auth.dart';
import 'package:your_project/user.dart' as UserModal;

那么你可以这样做:

 User user = FirebaseAuth.instance.currentUser;
 UserModal.User user = UserModal.User("name");

还要检查以下内容:

Undefined class 'FirebaseUser'

【讨论】:

  • @PintuJat 这正是错误消息所说的。
猜你喜欢
  • 2016-05-09
  • 2020-10-22
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多