Bloc 7.2 迁移 - 在流中传递参数

Bloc 7.2 migration - passing parameters inside streams

我目前正在将项目从 Bloc 7.0 迁移到 bloc 7.2

我曾经有一个流,我会在不同的流中 yield* 并且每次传递不同的值作为参数

 Stream<CartState> _mapCheckCart({CART_STATUS status}) async*
{...}

但是对于 BloC 7.2,我不得不重写我的流如下并且不知道 - 现在 - 如何传递参数:

 Future<void> _onCheckCart(event, Emitter<CartState> emit) async {
    ...
      emit(state.checkCartSuccess(
        amounts: cart.amounts,
        status: status, // I need to pass in the status here 
      ));
     ...
  }

理想情况下,我想像这样使用 _onCheckCart

    on<CheckCart>(
        _onCheckCart(statusOnSuccess: CART_STATUS.CHECK_CART_SUCCESS));

    on<CheckCustomerInformation>(_onCheckCart(
        statusOnSuccess: CART_STATUS.CHECK_CUSTOMER_INFORMATION_SUCCESS));

CART_STATUS 是一个 enum

enum CART_STATUS {LOADING,READY,CHECK_CART_IN_PROGRESS, ...}

定义:

Future<void> _onCheckCart(event, Emitter<CartState> emit, CART_STATUS status) async {

调用(或更确切地说:调用注册):

on<CheckCart>((ev, em) =>
    _onCheckCart(ev, em, CART_STATUS.CHECK_CART_SUCCESS));

on<CheckCustomerInformation>((ev, em) =>
    _onCheckCart(ev, em, CART_STATUS.CHECK_CUSTOMER_INFORMATION_SUCCESS));

您的 _onCheckCart 函数没有事件类型。你应该在那里使用正确的类型。