getter 'uid' 未定义
The getter 'uid' not defined
我正在尝试在 android studio 上创建美食曲目应用程序,这是我的第一次,我正在使用 firebase_auth 3.3.12。我在 aut.dart 中的代码是:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:my_firstapp/models/user_model.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
AuthService();
// create user object based on FirebaseUser.
UserModel _userFromUser(User) {
return user != null ? UserModel(uid: user.uid) : null;
}
// auth change user stream
Stream<UserModel> get user {
return _auth.authStateChanges()
.map(_userFromUser);
}
Future<UserModel> getUser() async {
User user = await _auth.currentUser();
return _userFromUser(user);
}
// sign in with email and password
Future signInWithEmailAndPassword(String email, String password) async {
try {
UserCredential result = await _auth.signInWithEmailAndPassword(email: email, password: password);
User user = result.user;
return _userFromUser(user);
} catch(e) {
print(e.toString());
return null;
}
}
// sign up with email and password
Future registerWithEmailAndPassword(String email, String password) async {
try {
UserCredential result = await _auth.createUserWithEmailAndPassword(email: email, password: password);
User user = result.user;
// create a new user document in database
return _userFromUser(user);
} catch(e) {
print(e.toString());
return null;
}
}
// sign out
Future signOut() async {
try {
return await _auth.signOut();
} catch(e){
print(e.toString());
return null;
}
}
}
但是我遇到了 2 个错误:
- getter 'uid' 没有为类型 'Stream' 定义;
- 表达式“await _auth.currentUser()”的计算结果不是函数,因此无法调用。
如何重写代码?谢谢
在这段代码中,您的参数是大写的 ('User'),但在您编写的代码块中 'user'。
UserModel _userFromUser(User) {
return user != null ? UserModel(uid: user.uid) : null;
}
此外,对于 _auth.currentUser()
,您不需要使用 await,因为它没有 return 未来。
_auth.currentUser
不是一个函数(它曾经是,但大约一年前改变了),而是一个 属性。它也不是异步的,所以你不需要 await
也不需要 return a Future
.
所以:
UserModel getUser() {
User user = _auth.currentUser;
return _userFromUser(user);
}
我正在尝试在 android studio 上创建美食曲目应用程序,这是我的第一次,我正在使用 firebase_auth 3.3.12。我在 aut.dart 中的代码是:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:my_firstapp/models/user_model.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
AuthService();
// create user object based on FirebaseUser.
UserModel _userFromUser(User) {
return user != null ? UserModel(uid: user.uid) : null;
}
// auth change user stream
Stream<UserModel> get user {
return _auth.authStateChanges()
.map(_userFromUser);
}
Future<UserModel> getUser() async {
User user = await _auth.currentUser();
return _userFromUser(user);
}
// sign in with email and password
Future signInWithEmailAndPassword(String email, String password) async {
try {
UserCredential result = await _auth.signInWithEmailAndPassword(email: email, password: password);
User user = result.user;
return _userFromUser(user);
} catch(e) {
print(e.toString());
return null;
}
}
// sign up with email and password
Future registerWithEmailAndPassword(String email, String password) async {
try {
UserCredential result = await _auth.createUserWithEmailAndPassword(email: email, password: password);
User user = result.user;
// create a new user document in database
return _userFromUser(user);
} catch(e) {
print(e.toString());
return null;
}
}
// sign out
Future signOut() async {
try {
return await _auth.signOut();
} catch(e){
print(e.toString());
return null;
}
}
}
但是我遇到了 2 个错误: - getter 'uid' 没有为类型 'Stream' 定义; - 表达式“await _auth.currentUser()”的计算结果不是函数,因此无法调用。
如何重写代码?谢谢
在这段代码中,您的参数是大写的 ('User'),但在您编写的代码块中 'user'。
UserModel _userFromUser(User) {
return user != null ? UserModel(uid: user.uid) : null;
}
此外,对于 _auth.currentUser()
,您不需要使用 await,因为它没有 return 未来。
_auth.currentUser
不是一个函数(它曾经是,但大约一年前改变了),而是一个 属性。它也不是异步的,所以你不需要 await
也不需要 return a Future
.
所以:
UserModel getUser() {
User user = _auth.currentUser;
return _userFromUser(user);
}