Json 如何在Flatter电子商务应用中向购物车添加产品项
我正在尝试将产品项目添加到购物车屏幕,但无法执行此操作。谁能帮帮我吗Json 如何在Flatter电子商务应用中向购物车添加产品项,json,flutter,Json,Flutter,我正在尝试将产品项目添加到购物车屏幕,但无法执行此操作。谁能帮帮我吗 单击“添加”按钮后,我想在购物车屏幕中显示该项目,并且在购物车中检查该项目之前,它将显示该项目已添加到购物车选项卡的通知。如果我理解您的意思,您正在尝试构建购物车应用程序。 请参考这个 您可以看到演示图片有一个“添加到购物车”按钮。并将所选产品附加到购物车列表中 StreamBuilder( //TODO:解决此问题 流:电子商务App.firestore .收款(“项目”) .where(“shortInfo”, isEqu
单击“添加”按钮后,我想在购物车屏幕中显示该项目,并且在购物车中检查该项目之前,它将显示该项目已添加到购物车选项卡的通知。如果我理解您的意思,您正在尝试构建购物车应用程序。 请参考这个 您可以看到演示图片有一个“添加到购物车”按钮。并将所选产品附加到购物车列表中
StreamBuilder(
//TODO:解决此问题
流:电子商务App.firestore
.收款(“项目”)
.where(“shortInfo”,
isEqualTo:EcommerceApp.sharedPreferences
.getStringList(电子商务App.userCartList)[i])
.snapshots(),
生成器:(上下文,快照){
return!snapshot.hasData
?滑动双轴适配器(
儿童:中心(
子对象:CircularProgressIndicator(),
),
)
:snapshot.data.docs.length==0
?beginBuildingCart()
:SliverList(
代表:SliverChildBuilderDelegate(
(上下文、索引){
ItemModel model=ItemModel.fromJson(
snapshot.data.docs[index].data(),
);
如果(索引==1){
总数=0;
合计金额=模型价格+合计金额;
}否则{
合计金额=模型价格+合计金额;
}
if(snapshot.data.docs.length-1==索引){
WidgetsBinding.instance
.addPostFrameCallback((时间戳){
(上下文)的提供者,
听:错)
.显示(总金额);
});
}
返回storeSourceInfo(模型、上下文、,
removeCartFunction:()=>
removeItemFromuserCart(
model.shortInfo);
},
childCount:snapshot.hasData
?snapshot.data.docs.length
: 0,
),
);
},
)
使用这段代码,我创建了一个名为“userCartList”的SharedReferences列表,每次添加cart按钮时,该列表都会用唯一ID“shortInfo”进行更新,然后使用我的产品数据库查询保存的“shortInfo”列表,该数据库返回一个流。但在我的例子中,我有产品列表api和cart的additem,获取购物车API。我想添加产品,并使用rest API增加产品数量。我建议您在另一个问题中发布此部分,并提供json字符串。对于有同样问题的人来说,搜索和帮助你会更容易。
StreamBuilder<QuerySnapshot>(
//TODO: to fix the issue
stream: EcommerceApp.firestore
.collection("items")
.where("shortInfo",
isEqualTo: EcommerceApp.sharedPreferences
.getStringList(EcommerceApp.userCartList)[i])
.snapshots(),
builder: (context, snapshot) {
return !snapshot.hasData
? SliverToBoxAdapter(
child: Center(
child: CircularProgressIndicator(),
),
)
: snapshot.data.docs.length == 0
? beginBuildingCart()
: SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) {
ItemModel model = ItemModel.fromJson(
snapshot.data.docs[index].data(),
);
if (index == 1) {
totalAmount = 0;
totalAmount = model.price + totalAmount;
} else {
totalAmount = model.price + totalAmount;
}
if (snapshot.data.docs.length - 1 == index) {
WidgetsBinding.instance
.addPostFrameCallback((timeStamp) {
Provider.of<TotalAmount>(context,
listen: false)
.display(totalAmount);
});
}
return storeSourceInfo(model, context,
removeCartFunction: () =>
removeItemFromuserCart(
model.shortInfo));
},
childCount: snapshot.hasData
? snapshot.data.docs.length
: 0,
),
);
},
)