只需将firebase_auth更新为最新的version 0.18.0+1
在官方文档中,要访问当前登录用户的uid
,我们必须执行以下操作:
FirebaseAuth auth = FirebaseAuth.instance;
if (auth.currentUser != null) {
print(auth.currentUser.uid);
}
但是,实现此代码时会引发异常:
The getter 'uid' isn't defined for the type 'Future<FirebaseUser> Function()
自从FirebaseUser
类在上一次更新中更改为User
以来,这很奇怪。
我尝试删除依赖项,也尝试过flutter clean
,然后重新导入依赖项和flutter pub get
。这是我的包裹:
dependencies:
flutter:
sdk: flutter
flutter_facebook_login: ^2.0.1
provider: ^4.3.2
google_sign_in: ^4.5.1
firebase_auth: ^0.18.0
cloud_firestore: "^0.14.0+2"
firebase_core: "0.5.0"
问题仍然存在,当我按住Ctrl键并单击.currentUser;
时,我将转到...>flutter_windows_1.17.3-stable>.pub-cach>hosted>pub.dartlang.org>firebase_auth-0.16.1>lib>src>firebase_auth.dart>FirebaseAuth
这很奇怪,因为最新版本是0.18而不是0.16。
这是我的代码:
// method that transforms FirebaseUser object to UserCustom Object
// below I get: Undefined class 'User'. Try changing the name to the name of an existing class,
// or creating a class with the name 'User'.
UserCustom _userToUserModel(User user) {
if (user == null) {
return null;
}
return UserCustom(uid: user.uid);
}
// is connected ?
@override
Future<UserCustom> isConnected() async {
try {
var user = _auth.currentUser;
if (user != null){
return _userToUserModel(user);
}
return null;
} catch (e) {
rethrow;
}
}
// custom user model
class UserCustom {
String uid;
UserCustom({@required this.uid});
}
我在做什么错了?
答案 0 :(得分:0)
您可能没有真的做flutter pub get
。这可以解释为什么您被指向错误的软件包版本。既然您声称自己已经做过,请尝试使用flutter pub cache repair
修复发布缓存。
您可能还想执行flutter pub upgrade
以确保您拥有最新的不间断版本的依赖关系。 firebase_auth
软件包已进行了一些更新,修复了您当前的pubspec.yaml
不受其约束的一些错误。
此外,请确保您对项目进行了干净的构建。更新项目依赖项时,不能使用有状态的热重装。