【问题标题】:Bloc 7.2 migration - passing parameters inside streamsBloc 7.2 迁移 - 在流中传递参数
【发布时间】:2022-01-18 12:29:46
【问题描述】:

我目前正在将一个项目从 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_STATUSenum

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

【问题讨论】:

    标签: flutter dart migration bloc


    【解决方案1】:

    定义:

    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 函数没有事件类型。您应该在那里使用正确的类型。

    【讨论】:

    • Future&lt;void&gt; _onCheckCart( CartEvent event, Emitter&lt;CartState&gt; emit, CART_STATUS status) 谢谢我将CartEvent 添加为CheckCustomerInformationCheckCart 扩展CartEvent 的事件类型 - 这是正确的做法吗?
    • 是的,很好。
    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 2022-01-15
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2022-08-12
    • 2019-01-09
    相关资源
    最近更新 更多