首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在flutter中将商品数量从cartscreen更新到餐厅详细信息屏幕并返回到餐厅细节屏幕?

如何在flutter中将商品数量从cartscreen更新到餐厅详细信息屏幕并返回到餐厅细节屏幕?
EN

Stack Overflow用户
提问于 2021-06-23 13:07:34
回答 1查看 44关注 0票数 0

我正在开发一个外卖应用程序,用户点击add items from restaurantDetail screen并将项目添加到购物车中。在购物车屏幕中,当用户在特定商品计数中进行更改时。我想在restaurantDetail屏幕上更新每个项目中的相同项目计数?

我正在从cartlist的回调中传递整个购物车列表,并在restaurantDetail屏幕上获得相同的列表。如何更新其中的项目计数?

在一个回调中,我返回了这个函数,其中包含一个total和callbackFromCart参数。

代码语言:javascript
代码运行次数:0
运行
复制
final Function(double, List<CartModel>) callbackFromCart;

在RestaturantDetailScreen上,我在下面的函数上也得到了同样的结果:

代码语言:javascript
代码运行次数:0
运行
复制
onCartBackPress(totalPriceFromCart, List<CartModel> _listFromCartItem) {
print("LIST FROM CART :${_listFromCartItem}");
for (var item in _listFromCartItem) {
  for (var mainrestaurantItem in _itemList) {
    if (mainrestaurantItem.id == item.restaurantItemId) {
      mainrestaurantItem.totalQty = item.totalQty;
      updatedItemCount = mainrestaurantItem.totalQty;
      print("UPDATED ITEM COUNT : $updatedItemCount");
    }
  }
}
setState(() {
  _totalPrice = totalPriceFromCart;
});
print(_itemList);
if (_listFromCartItem.isEmpty == true) {
  getRestaurantDetail();
}

}

EN

回答 1

Stack Overflow用户

发布于 2021-06-23 14:21:08

代码语言:javascript
代码运行次数:0
运行
复制
class _RestaurantState extends State<RestaurantPage> {
  
  StreamController<List<YourItemModel> itemsController = StreamController<List<YourItemModel>>();
  List<YoutItemModel> itemsList = [];
  
  @override
  Widget build(BuildContext context) {
    .....
      
      StreamBuilder<List<YourItemModel>(
      stream: itemsController.stream,
      builder: (con, data){
       //check for loading or empty data here
       //else return listview
       return ListView.builder(
        ......
       );
      }
      
      ),
      
    .....
      
      override
      void dispose(){
      itemsController.close();
      super.dispose();
    }
  }
  
  void gotoCartPage() async {
    
    List<YourItemModel> newList = await Navigator.push(
    context, builder: (c)=> CartPage(items: itemsList));
    
    if(newList != null){
      itemsList.clear();
      itemsList.addAll(newList);
      itemsController.sink.add(itemsList);
    }
  }
  
}

  // In CartPage
  
  class CartPage extends StatefulWidget{
    
    final List<YourItemModel> list;
    CartPage({Key k, required this.list}) : super(key:k);
    
    @override
  _CartPageState createState() => _CartPageState(list);
    
  }
  
  class _CartPageState extends State<CartPage> {
    _CartPageState(this.modifiedList);
    
    List<YourItemModel> modifiedList;
  
  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: (){
        Navigator.of(context).pop(modifiedList);
        return Future.value(true);
      },
      child: Scaffold(
       //Increase or decrease your items from itemsList in CartPage
       //and return modified list to the parent/restaurant screen
      .....
      ),
     );
  }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68093806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档