Android ';登录地址';不';t扩展';库比特<;LoginState>';

Android ';登录地址';不';t扩展';库比特<;LoginState>';,android,flutter,bloc,Android,Flutter,Bloc,我是新来的。目前我使用bloc来帮助我。 当我在UI中使用bloc时,我总是得到“LoginBloc”不会扩展“Cubit” 我已经习惯了这个阵营 这是我的用户界面 @override Widget build(BuildContext context) { return Scaffold( body: BlocBuilder<LoginBloc, LoginState>( builder: (BuildContext context, LoginState stat

我是新来的。目前我使用bloc来帮助我。 当我在UI中使用bloc时,我总是得到
“LoginBloc”不会扩展“Cubit”
我已经习惯了这个阵营 这是我的用户界面

 @override
Widget build(BuildContext context) {
 return Scaffold(
  body: BlocBuilder<LoginBloc, LoginState>(
    builder: (BuildContext context, LoginState state) {},
   ),
 );
 }
@覆盖
小部件构建(构建上下文){
返回脚手架(
正文:BlocBuilder(
生成器:(BuildContext上下文,LoginState状态){},
),
);
}
这是我的集体课

class LoginBloc extends Bloc<LoginEvent, LoginState> {
final AuthenticationService authenticationService;

LoginBloc(this.authenticationService) : super(null);

@override
Stream<LoginState> mapEventToState(LoginEvent event) async* {
 if (event is LoginSubmitted) {
  yield* _loginMapToState(event);
 }
}

Stream _loginMapToState(LoginSubmitted event) async* {
try {
  UserDTO userDTO =
      UserDTO(event.username, event.password, event.rememberMe);
  var response =
      await authenticationService.authenticate(userDTO.toJson().toString());
  if (response.statusCode == 200) {
    Map<String, String> token = jsonDecode(response.body);
    await Preferences.setString(ConstValue.TOKEN, token['id_token']);
    yield LoginSuccess();
   }
  } catch (e) {
  yield LoginError(e);
 }
 }
}
classloginbloc扩展了Bloc{
最终认证服务认证服务;
LoginBloc(this.authenticationService):super(null);
@凌驾
流mapEventToState(LoginEvent事件)异步*{
如果(事件已登录提交){
收益*\u登录密码状态(事件);
}
}
流\u loginMapToState(LoginSubmitted事件)异步*{
试一试{
UserDTO UserDTO=
UserDTO(event.username、event.password、event.rememberMe);
var响应=
等待authenticationService.authenticate(userDTO.toJson().toString());
如果(response.statusCode==200){
Map token=jsonDecode(response.body);
wait Preferences.setString(ConstValue.TOKEN,TOKEN['id_TOKEN']);
收益登录成功();
}
}捕获(e){
收益率(e);
}
}
}

您需要使用cubit或bloc。您在这里使用bloc和扩展cubitState,这是不可行的。尝试扩展BlocState而不是CubitState。另外,共享bloc代码的事件和状态部分,这可能有助于调试代码。

在我的例子中,我错误地使用了BlocBuilder参数。
第一个始终是“集团”,第二个始终是“国家”

问题可能出现在您的“集团事件”类中。 例如,如果您有下面的类,则可能会导致该错误

class GetTrackStages extends StagesEvent {
  final String trackId;

 GetTrackStages({@required this.trackId});
}
如果你有下面的类,你就不会有这个问题

class GetTrackStages extends StagesEvent {
  final String trackId;

  const GetTrackStages({@required this.trackId});
}
您所需要做的就是向事件构造函数添加一个常量。

仅更改bloc文件夹中的文件名

ex-[productCategoryList_Bloc.dart]到[list_Bloc.dart]

ex-[articleMyListEvent\u Bloc.dart]至[article\u event.dart]