我的flutter / dart应用程序将Provider程序包与各种身份验证服务(例如Google,Apple,Firebase等)一起使用。我希望我的抽象类为各种实现提供更多指导,例如:
abstract class AuthService{
Future<User> signIn();
}
abstract class User{}
实际上,我必须将其实现为:
abstract class AuthService{
Future<dynamic> signIn();
}
因为我的AuthService的特定实现不会返回用户,而是FirebaseUser或AppleUser。有没有一种方法可以将返回类型指定为抽象User类的某种实现?
答案 0 :(得分:1)
这与返回任何种类的抽象基类并没有什么不同;构造一个具体类的实例并返回它。
abstract class AuthService{
Future<User> signIn();
}
abstract class User{}
class FirebaseUser extends User {}
class FirebaseAuthService extends AuthService {
@override
Future<User> signIn() {
return Future.value(FirebaseUser());
}
}
答案 1 :(得分:0)
abstract class AuthService<T>{
Future<T> signIn();
}
class ExampleAuthService extends AuthService<FirebaseUser> {
@override
Future<FirebaseUser> signIn() {
throw UnimplementedError();
}
}