Android ';登录地址';不';t扩展';库比特<;LoginState>';
我是新来的。目前我使用bloc来帮助我。 当我在UI中使用bloc时,我总是得到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
“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]