超类 'Bloc<xxx, xxx>' 在 dart 中没有零参数构造函数
The superclass 'Bloc<xxx, xxx>' doesn't have a zero argument constructor in dart
我是Dart语言开发的初学者。我尝试创建一个受 this GitHub repo 启发的示例 flutter 应用程序 BLOC 模式,但我收到了一些与 class 继承相关的错误消息。我已经熟悉了点网C#语言中的继承和superclass和subclass编程。但是在飞镖的情况下,我需要一些建议。
这是我的代码:
class UserRegBloc extends Bloc<UserRegEvent, UserRegState> {
UserRepository userRepository;
UserRegBloc({@required UserRepository userRepository}) {
userRepository = UserRepository();
}
@override
UserRegState get initialState => UserRegInitial();
@override
Stream<UserRegState> mapEventToState(UserRegEvent event) async* {
if (event is SignUpButtonPressed) {
yield UserRegLoading();
try {
var user = await userRepository.signUpUserWithEmailPass(
event.email, event.password);
print("BLOC : ${user.email}");
yield UserRegSuccessful(user: user);
} catch (e) {
yield UserRegFailure(message: e.toString());
}
}
}
}
编辑
我的 pubspec.yaml 依赖项如下:
看来您需要向集团提供初始状态。像这样:
class UserRegBloc extends Bloc<UserRegEvent, UserRegState> {
UserRepository userRepository;
UserRegBloc({@required UserRepository userRepository}) : super(UserRegInitialState()) {
userRepository = UserRepository();
}
// ...
}
其中 UserRegInitialState
是 UserRegState
的子 class。
这是bloc库版本不同造成的差异。您的 link 项目使用 flutter_bloc 版本 3.0,您问题中同一包的版本是 6.1.1。所以代码上有一点不同。该错误基本上表明 UserRegBloc
的基数 class 需要一个参数。所以你不能在不提供该参数的情况下声明一个 subclass,因此错误。
移除超类的构造函数(实例变量)。
我是Dart语言开发的初学者。我尝试创建一个受 this GitHub repo 启发的示例 flutter 应用程序 BLOC 模式,但我收到了一些与 class 继承相关的错误消息。我已经熟悉了点网C#语言中的继承和superclass和subclass编程。但是在飞镖的情况下,我需要一些建议。
这是我的代码:
class UserRegBloc extends Bloc<UserRegEvent, UserRegState> {
UserRepository userRepository;
UserRegBloc({@required UserRepository userRepository}) {
userRepository = UserRepository();
}
@override
UserRegState get initialState => UserRegInitial();
@override
Stream<UserRegState> mapEventToState(UserRegEvent event) async* {
if (event is SignUpButtonPressed) {
yield UserRegLoading();
try {
var user = await userRepository.signUpUserWithEmailPass(
event.email, event.password);
print("BLOC : ${user.email}");
yield UserRegSuccessful(user: user);
} catch (e) {
yield UserRegFailure(message: e.toString());
}
}
}
}
编辑
我的 pubspec.yaml 依赖项如下:
看来您需要向集团提供初始状态。像这样:
class UserRegBloc extends Bloc<UserRegEvent, UserRegState> {
UserRepository userRepository;
UserRegBloc({@required UserRepository userRepository}) : super(UserRegInitialState()) {
userRepository = UserRepository();
}
// ...
}
其中 UserRegInitialState
是 UserRegState
的子 class。
这是bloc库版本不同造成的差异。您的 link 项目使用 flutter_bloc 版本 3.0,您问题中同一包的版本是 6.1.1。所以代码上有一点不同。该错误基本上表明 UserRegBloc
的基数 class 需要一个参数。所以你不能在不提供该参数的情况下声明一个 subclass,因此错误。
移除超类的构造函数(实例变量)。