我是新来的。目前我用集团帮我。当我在UI中使用区块时,我总是使用'LoginBloc' doesn't extend 'Cubit<LoginState>' --我这里使用的是依赖项-- flutter_bloc
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocBuilder<LoginBloc, LoginState>(
builder: (BuildContext context, LoginState state) {},
),
);
}这是我的集体课。
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);
}
}
}发布于 2020-07-28 05:12:44
你需要要么用肘,要么用整块。你在这里使用集团和扩展cubitState,这是不可行的。尝试扩展BlocState而不是CubitState。此外,共享单元代码中的事件和状态部分,这可能有助于调试代码。
发布于 2020-09-13 09:08:38
这个问题可能会出现在您的Bloc事件类中。例如,如果您有下面的类,它可能会导致该错误。
class GetTrackStages extends StagesEvent {
final String trackId;
GetTrackStages({@required this.trackId});
}如果你有下面的课,你就不会有这个问题了
class GetTrackStages extends StagesEvent {
final String trackId;
const GetTrackStages({@required this.trackId});
}您所需要做的就是向事件构造函数中添加一个const。
发布于 2020-08-01 12:32:13
在我的例子中,我在BlocBuilder参数上出错了。第一个总是布洛克,第二个永远是国家。
https://stackoverflow.com/questions/63127393
复制相似问题