【发布时间】:2020-10-14 04:14:20
【问题描述】:
我有点卡住了,我的颤振应用程序中有一个 Bloc,当相机找到二维码时需要调用配置检查 (isConfigured())。但我总是遇到 [错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:未处理的错误 NoSuchMethodError:在 null 上调用了方法“isConfigured”。 接收方:空 尝试调用:isConfigured() 发生在 'QrBloc' 的 bloc 实例中。
这是联盟
class QrBloc extends Bloc<QrEvent, QrState> {
final ValidateTicket validateTicket;
final ConfigureCode configureCode;
final QrCodeRepository repository;
QrBloc(
{@required ValidateTicket validateTicket,
@required ConfigureCode configureCode,
this.repository})
: assert(validateTicket != null, configureCode != null),
validateTicket = validateTicket,
configureCode = configureCode;
@override
QrState get initialState => InitialState();
@override
Stream<QrState> mapEventToState(
QrEvent event,
) async* {
if (event is QrCodeScanned) {
final bool isConfigured = await repository.isConfigured();
if (isConfigured) {
final result = await validateTicket(ValidateParams(code: event.qrCode));
yield* _eitherTicketOrErrorState(result);
} else {
yield ConfigurationState();
}
} else if (event is SaveConfiguration) {
final failureOrNot =
await configureCode(ConfigureParams(code: event.qrCode));
yield* _eitherConfigOrErrorState(failureOrNot);
}
}
Stream<QrState> _eitherConfigOrErrorState(
Either<Failure, ConfigurationQrCodeModel> either,
) async* {
yield either.fold(
(failure) => Error(message: _mapFailureToMessage(failure)),
(qrCode) => InitialState(),
);
}
Stream<QrState> _eitherTicketOrErrorState(
Either<Failure, TicketModel> either,
) async* {
yield either.fold(
(failure) => Error(message: _mapFailureToMessage(failure)),
(qrCode) {
if (qrCode.ticketValid == true) {
return ValidTicketState(ticket: qrCode);
} else {
return InvalidTicketState(ticket: qrCode);
}
},
);
}
String _mapFailureToMessage(Failure failure) {
switch (failure.runtimeType) {
case ServerFailure:
return serverExceptionText;
default:
return unexpectedExceptionText;
}
}
}
这就是电话
sl().add(QrCodeScanned(qrCode: data));
【问题讨论】:
标签: flutter