【问题标题】:Flutter Bloc LibraryFlutter Bloc 库
【发布时间】:2021-03-15 11:33:43
【问题描述】:

在一个应用程序中,我试图实现购物车功能。 ItemDetailsS​​creen 有 addItemBtn,添加项目后返回 null。这个函数工作正常,但问题是当我去cartScreen并清除购物车,然后再回到ItemDetailsS​​creen时,addItemBtn仍然返回null。要返回添加状态,我必须使用热重载。看起来状态没有更新!?那么如何解决呢?

添加ItemBtn:

   BlocBuilder<CartFunctionsCubit, CartFunctionsState>(
      builder: (context, state) {
        return state.map(
          initial: (_) => Container(),
          cartLoaded: (state) => FlatButton(
            onPressed: state.userCart.items.contains(item)
                ? null
                : () {
                    context.read<CartFunctionsCubit>().addToCart(item);
                    context.read<CartFunctionsCubit>().startApp();
                  },
            child: state.userCart.items.contains(item)
                ? Text('Added')
                : Text('Add'),
          ),
        );
      },
    );

肘:

 Future<void> startApp() async {
    final userCart = await cartFacade.getUserCart();

    emit(CartFunctionsState.cartLoaded(userCart: userCart));
  }

  Future<void> addToCart(Item item) async {
    cartFacade.addToCart(item);
  }

导航到我正在使用的购物车屏幕

 Navigator.of(context).pushNamed('/cart');

【问题讨论】:

    标签: flutter dart flutter-bloc


    【解决方案1】:

    您可以等待推送功能,然后调用 context.read&lt;CartFunctionsCubit&gt;().startApp();

    await Navigator.of(context).pushNamed('/cart');
     context.read<CartFunctionsCubit>().startApp();
    

    当您从购物车页面返回时它会刷新数据

    如果您想在购物车页面中更改某些内容时更改数据。在Navigator.pop()中给出布尔值

    购物车页面中

     bool needToRefresh = false/// when there is a change set needToRefresh = true
        Navigator.pop(context,needToRefresh );/// and pass the value here
    

    在项目详细信息屏幕中

    bool needToRefresh = await Navigator.of(context).pushNamed('/cart');
    if(needToRefresh !=null && needToRefresh)
       context.read<CartFunctionsCubit>().startApp();
    

    只有当needToRefreshtrue时才会刷新数据;

    【讨论】:

      猜你喜欢
      • 2021-03-19
      • 2020-05-06
      • 2020-09-28
      • 2021-08-01
      • 2020-02-06
      • 2021-09-20
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多