超类 'Bloc<xxx, xxx>' 在 dart 中没有零参数构造函数
Posted
技术标签:
【中文标题】超类 \'Bloc<xxx, xxx>\' 在 dart 中没有零参数构造函数【英文标题】:The superclass 'Bloc<xxx, xxx>' doesn't have a zero argument constructor in dart超类 'Bloc<xxx, xxx>' 在 dart 中没有零参数构造函数 【发布时间】:2021-03-05 08:00:56 【问题描述】:我是 Dart 语言开发的初学者。我尝试创建一个受this GitHub repo 启发的示例 Flutter 应用程序 BLOC 模式,但我收到了一些与类继承相关的错误消息。我已经熟悉点网C#语言中的继承和超类和子类编程。但就飞镖而言,我需要一些建议。
这是我的代码:
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 依赖项如下:
【问题讨论】:
【参考方案1】:您似乎需要为集团提供初始状态。像这样的:
class UserRegBloc extends Bloc<UserRegEvent, UserRegState>
UserRepository userRepository;
UserRegBloc(@required UserRepository userRepository) : super(UserRegInitialState())
userRepository = UserRepository();
// ...
其中UserRegInitialState
是UserRegState
的子类。
这是由于 bloc 库版本不同造成的差异。您的链接项目使用 flutter_bloc 3.0 版,您问题中同一包的版本是 6.1.1。所以代码有细微的差别。该错误基本上表明UserRegBloc
的基类需要一个参数。所以你不能在不提供该参数的情况下声明子类,因此会出现错误。
【讨论】:
非常感谢。是的,我注意到旧版本的 bloc 库中没有出现此错误。 我只是采用了git repo的结构。以上是关于超类 'Bloc<xxx, xxx>' 在 dart 中没有零参数构造函数的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式载入网站ip地址 xxx.xxx.xxx.xxx:xxxx
元素的属性相关操作element.getAttribute('xxx'),element.setAttribute('xxx','xxx'),eleme