关于 flutter firebase 应用程序构建。Stream 函数有一条红线。目前使用 2 个文件 auth.dart 和 user.dart
我的代码 auth.dart 文件:
import 'package:coffee_dan/models/user.dart';
import 'package:firebase_auth/firebase_auth.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
MyUser Function(User? event)? get userFromFirebaseUser => null;
MyUser? _userFromFirebaseUser(User user) {
// ignore: unnecessary_null_comparison
return user!= null ? MyUser(uid: user.uid) : null;
}
Stream<MyUser> get user {
return _auth.authStateChanges().map(_userFromFirebaseUser); Red Line in here **_userFromFirebaseUser**
}
Future signInAnon() async {
try {
UserCredential result = await _auth.signInAnonymously();
User? user = result.user;
return _userFromFirebaseUser(user!);
} catch (e) {
print(e.toString());
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
user.dart 文件:
class MyUser {
final String uid;
MyUser({required this.uid});
}
Run Code Online (Sandbox Code Playgroud)
您的代码中有两处需要更改:
您的 _userFromFirebaseUser 签名需要接收一个可为空的用户,然后您将能够删除“忽略”注释行。它应该如下所示:
MyUser? _userFromFirebaseUser(User? user) {
return user != null ? MyUser(uid: user.uid) : null;
}
Run Code Online (Sandbox Code Playgroud)
您的用户 getter 应该返回 Stream<MyUser?> 这将消除错误。那应该如下所示:
Stream<MyUser?> get user {
return _auth.authStateChanges().map(_userFromFirebaseUser);
}
Run Code Online (Sandbox Code Playgroud)
完整代码(保留您的导入):
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
MyUser Function(User? event)? get userFromFirebaseUser => null;
MyUser? _userFromFirebaseUser(User? user) {
return user!= null ? MyUser(uid: user.uid) : null;
}
Stream<MyUser?> get user {
return _auth.authStateChanges().map(_userFromFirebaseUser);
}
Future signInAnon() async {
try {
UserCredential result = await _auth.signInAnonymously();
User? user = result.user;
return _userFromFirebaseUser(user!);
} catch (e) {
print(e.toString());
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |