【问题标题】:Undefined name 'state' for flutter bloc version 8.0.0颤振块版本 8.0.0 的未定义名称“状态”
【发布时间】:2022-01-21 06:33:43
【问题描述】:

我正在尝试访问bloc(使用最新版本的flutter_bloc: 8.0.0state 中的BlocBuilder 值,但我不断收到state 未定义的错误消息。我发现this answer 有类似的问题,但这不是问题。 SetInitialValuesEventConvertBloc 被初始化并且_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


    【解决方案1】:

    你好像有错字:

    您在构建函数参数中使用了sate,但尝试使用state 访问它

    像这样:

    Widget build(BuildContext context) {
        return BlocBuilder<ConvertBloc, ConvertState>(
          builder: (context, sate) {
            return Text(state.unitSystemFrom);
          },
        );
      }
    

    改用这个:

    Widget build(BuildContext context) {
        return BlocBuilder<ConvertBloc, ConvertState>(
          builder: (context, state) {
            return Text(state.unitSystemFrom);
          },
        );
      }
    

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 2021-05-01
      • 2021-01-17
      • 1970-01-01
      • 2021-03-28
      • 2021-11-06
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多