如何解决Flutter:显示项目的总和
所以我为我的电子商务应用制作了一个购物车页面,我想在脚手架底部显示商品的总和。 但问题是即使使用状态管理,它也没有给我预期的结果。
这是我的总价值控制器。
class totalvaluecontroller extends GetxController {
RxInt total = 0.obs;}
这是为用户获取每个项目ID的代码
class appcart extends StatefulWidget {
appcart({Key? key}) : super(key: key);
@override
_appcartState createState() => _appcartState();
}
class _appcartState extends State<appcart> {
@override
Widget build(BuildContext context) {
//bool all_items = false;
totalvaluecontroller valuecontroller = Get.find();
FirebaseController controller = Get.find();
String custom_uid = controller.firebaseUser.value!.uid;
return Scaffold(
appBar: AppBar(
centerTitle: true,title: Text(
"Your Cart",),backgroundColor: Colors.black87,leading: IconButton(
icon: Icon(Icons.arrow_back),onPressed: () {
Get.back();
}),actions: [],body: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20.0,vertical: 20.0),child: StreamBuilder<DocumentSnapshot>(
stream: FirebaseFirestore.instance
.collection("User_Carts")
.doc(custom_uid)
.snapshots(),builder: (BuildContext context,AsyncSnapshot<DocumentSnapshot>
snapshot) {
if (snapshot.hasError) {
return Text("Error: ${snapshot.error}");
}
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return SpinKitFadingCircle(
color: Colors.black45);
default:
return new ListView.builder(
itemCount:
snapshot.data!['Items'].length,itemBuilder: (BuildContext context,int index) {
return itemtile(
productid: snapshot.data!['Items']
[index],custom_uid: custom_uid,index: index,);
},);
}
},bottomNavigationBar:
BottomAppBar(child: totaldisplaer()),//THE MAIN PROBLEM
);
}
}
这是获取有关每个产品的信息并显示在卡片中的代码
class itemtile extends StatelessWidget {
final String productid;
final String custom_uid;
final int index;
const itemtile(
{required this.productid,required this.custom_uid,required this.index});
@override
Widget build(BuildContext context) {
totalvaluecontroller valuecontroller = Get.find();
return StreamBuilder<DocumentSnapshot>(
stream: FirebaseFirestore.instance
.collection("Products")
.doc(productid.trim())
.snapshots(),AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
/*else if (!snapshot.hasData) {
return CircularProgressIndicator();
}*/
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return SpinKitFadingCircle(
color: Colors.black45);
default:
valuecontroller.total =
valuecontroller.total +
(snapshot.data!["Price"] as int);
return Card(
elevation: 20.0,color: Color(snapshot.data!['Colour']),shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(15.0)),child: Padding(
padding: const EdgeInsets.all(8.0),child: Row(
children: <Widget>[
Container(
height: 50.0,width: 50.0,child: CachedNetworkImage(
placeholder: (context,url) =>
Center(
child: SpinKitWave(
color: Colors.white38,)),imageUrl: snapshot.data!['Url'],SizedBox(
width: 10.0,Text(snapshot.data?['Brand']),Spacer(),Column(
children: <Widget>[
SizedBox(height: 25),Text(
"\$${snapshot.data?['Price']}"),],)
],);
}
});
}
}
现在因为我想在底部显示总和使用底部导航栏并使用此代码
class totaldisplaer extends StatelessWidget {
const totaldisplaer({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
totalvaluecontroller valuecontroller = Get.find();
return Obx(() => Text("${valuecontroller.total}"));
}
}
给我以下错误
请提出解决方案
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。