0

伙计们,我需要一些帮助。

我有这个代码


  void onLoad(int id) async {
    final result = await ListRepository.loadProduct(id);

    if (result != null) {
      product = result;

      WoocommerceModel? model = product!.woo;

      if (model!.woocommerce) {
        List? result2 = await ListRepository.loadOffsiteCoupon(model: model);

        emit(ProductOffsiteCouponSuccess(result2));
        emit(ProductDetailSuccess(product!));

      } else {
        emit(ProductDetailSuccess(product!));
      }
    }
  }

发射(ProductDetailSuccess(产品!));工作正常但发出(ProductOffsiteCouponSuccess(result2));不起作用。

这是状态定义:



abstract class ProductDetailState {}

class ProductDetailLoading extends ProductDetailState {}

class ProductOffsiteCouponSuccess extends ProductDetailState {
  final List? coupon;

  ProductOffsiteCouponSuccess(this.coupon);
}

class ProductDetailSuccess extends ProductDetailState {
  final ProductModel product;

  ProductDetailSuccess(this.product);
}

我正在尝试访问此处的数据>>

if (state is ProductOffsiteCouponSuccess) {
            couponList = state.coupon;
           
          }

在这个构建方法中>>

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => _productDetailCubit,
      child: BlocBuilder<ProductDetailCubit, ProductDetailState>(
        builder: (context, state) {
          ProductModel? product;
          List? couponList;
          if (state is ProductDetailSuccess) {
            product = state.product;
          }
          if (state is ProductOffsiteCouponSuccess) {
            couponList = state.coupon;
            
          }
          return Scaffold(
            body: _buildContent(product),
            drawer: Drawer(),
          );
        },
      ),
    );
  }
}

知道为什么这不起作用吗?

我在变量“result2”中毫无问题地获取数据,但我无法发出成功状态来保存数据以供以后使用。

任何帮助表示赞赏。

提前致谢。

4

1 回答 1

0

如果您使用带有优惠券的特定类型(如 List)并且它不是 String 或 int,那么您应该使用 Equatable 扩展它以及抽象类并将其变量添加到 props,即使这不起作用,您也可以尝试toSet().toList()

于 2022-02-05T20:57:16.157 回答