【发布时间】:2022-01-21 06:33:43
【问题描述】:
我正在尝试访问bloc(使用最新版本的flutter_bloc: 8.0.0)state 中的BlocBuilder 值,但我不断收到state 未定义的错误消息。我发现this answer 有类似的问题,但这不是问题。 SetInitialValuesEvent 在 ConvertBloc 被初始化并且_onSetInitialValuesEventToState() 被调用时添加。
我唯一能想到的尝试是检查state 是否在BlocConsumer 侦听器中定义(可访问)(确实如此):
Widget build(BuildContext context) {
return BlocConsumer<ConvertBloc, ConvertState>(
listener: (context, state) {
//defined / accessible
print("------- ${state.unitSystemFrom}");
},
builder: (context, sate) {
//undefined / not accessible
return Text(state.unitSystemFrom);
},
);
}
小部件构建方法:
Widget build(BuildContext context) {
return BlocBuilder<ConvertBloc, ConvertState>(
builder: (context, sate) {
return Text(state.unitSystemFrom);
},
);
}
从 bloc 设置初始值事件:
class SetInitialValuesEvent extends ConvertEvent {
final String unitSystemFrom;
final double unitValueFrom;
final String unitFrom;
final String unitSystemTo;
final double unitValueTo;
final String unitTo;
const SetInitialValuesEvent(
this.unitSystemFrom,
this.unitValueFrom,
this.unitFrom,
this.unitSystemTo,
this.unitValueTo,
this.unitTo,
);
@override
List<Object?> get props => [
unitSystemFrom,
unitValueFrom,
unitFrom,
unitSystemTo,
unitValueTo,
unitTo
];
}
集团:
class ConvertBloc extends Bloc<ConvertEvent, ConvertState> {
ConvertBloc()
: super(const ConvertState(
unitSystemFrom: '',
unitValueFrom: 0,
unitFrom: '',
unitSystemTo: '',
unitValueTo: 0,
unitTo: '')) {
on<SetInitialValuesEvent>(_onSetInitialValuesEventToState);
}
void _onSetInitialValuesEventToState(
SetInitialValuesEvent event, Emitter<ConvertState> emit) {
emit(ConvertState(unitSystemFrom: event.unitSystemFrom,
unitValueFrom: event.unitValueFrom,
unitFrom: event.unitFrom,
unitSystemTo: event.unitSystemTo,
unitValueTo: event.unitValueTo,
unitTo: event.unitTo))
}
}
【问题讨论】:
标签: flutter bloc flutter-bloc