【发布时间】:2021-03-15 11:33:43
【问题描述】:
在一个应用程序中,我试图实现购物车功能。 ItemDetailsScreen 有 addItemBtn,添加项目后返回 null。这个函数工作正常,但问题是当我去cartScreen并清除购物车,然后再回到ItemDetailsScreen时,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