【发布时间】:2021-07-25 08:48:17
【问题描述】:
我无法检索 Firebase 用户。下面是我的用户类,只是为了从 Firebase 用户数据中获取必填字段。
class Users {
final String uid;
Users({ required this.uid });
}
下面是我的 Auth 类:
import 'dart:async';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:codeproject/models/users.dart';
abstract class AuthBase {
Stream<Users> get authStateChanges;
Future<Users> currentUser();
Future<Users> signInAnonymously();
Future<Users> signInWithEmailAndPassword(String email, String password);
Future<Users> createUserWithEmailAndPassword(String email, String password);
Future<Users> signInWithGoogle();
Future<void> signOut();
}
class AuthService implements AuthBase {
final FirebaseAuth _auth = FirebaseAuth.instance;
Users _userFromFirebase(User user) {
if (user == null) {
**return null;**
}
return Users(uid: user.uid);
}
// ERROR: A value of type 'Null' can't be returned from the method '_userFromFirebase' because it has a return type of 'Users'.
@override
Stream<Users> get authStateChanges {
return _auth.authStateChanges().map(**_userFromFirebase**);
}
//ERROR: The argument type 'Users Function(User)' can't be assigned to the parameter type 'Users Function(User?)'.
@override
Future<Users> currentUser() async {
final user = _auth.currentUser;
return _userFromFirebase(**user**);
}
//ERROR: The argument type 'User?' can't be assigned to the parameter type 'User'.
@override
Future<Users> signInAnonymously() async {
final authResult = await _auth.signInAnonymously();
return _userFromFirebase(**authResult.user**);
}
//ERROR: The argument type 'User?' can't be assigned to the parameter type 'User'.
}
我用 **** 突出显示的错误部分
【问题讨论】:
-
请不要在帖子中添加“谢谢”、签名和其他噪音:它们只会为网站的编辑创造更多的工作。 Stack Overflow 是问题和答案的集合,而不是论坛。把我们想象成一本百科全书。如果您担心帖子的归属,那么每个帖子上都会显示一张用户卡。
标签: firebase flutter firebase-authentication