---------------------------------------------------------shopping_page.dart
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:getxwork/controller/cart_controller.dart';
import 'package:getxwork/controller/shopping_controller.dart';
class ShoppingPage extends StatelessWidget {
final shoppingController = Get.put(ShoppingController());
final cartController = Get.put(Cart());
@OverRide
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
Expanded(
child: GetX(builder: (controller) {
return ListView.builder(
itemCount: controller.products().length,
itemBuilder: (context, index) {
return Card(
margin: const EdgeInsets.all(5),
child: Padding(
padding: EdgeInsets.all(4),
child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
'${controller.products()[index].productName}',
style: TextStyle(
fontSize: 20,
color: Colors.red),
),
Text(
'${controller.products()[index].productDescription}',
style: TextStyle(
fontSize: 19,
color: Colors.black),
),
],
),
Column(
children: [
Text(
'$${controller.products()[index].price}',
style: TextStyle(
fontSize: 23,
fontWeight:
FontWeight.bold)),
ElevatedButton(
onPressed: () {
cartController.addToCart(
controller
.products[index]);
},
child: Container(
decoration: BoxDecoration(
shape: BoxShape.rectangle,
// color: Colors.lightBlue,
),
child: Text('Add to Card'),
))
],
)
],
),
])));
},
);
}),
),
GetX(builder: (controller) {
return Text('Total amount : $ ${controller.totalPrice}');
}),
],
),
),
floatingActionButton: FloatingActionButton.extended(
onPressed: () {},
icon: Icon(
Icons.add_shopping_cart,
color: Colors.black,
),
label: GetX(
builder: (controller) {
return Text(
controller.count.toString(),
style: TextStyle(color: Colors.black),
);
},
)));
}
}
-----------------------------------------------shopping_controller.dart
import 'package:get/get.dart';
import 'package:getxwork/models/products.dart';
class ShoppingController extends GetxController {
var products = [].obs;
@OverRide
void onInit() {
super.onInit();
fetchProducts();
}
void fetchProducts() async {
await Future.delayed(Duration(seconds: 1));
var productResult = [
Product(1, 'a', 'i', 'Test 1', 100),
Product(2, 'b', 'i', 'Test 2', 200),
Product(3, 'c', 'i', 'Test 3', 300),
];
products.value = productResult.obs;
}
}
------------------------------------------cart_controller.dart
import 'package:get/get.dart';
import 'package:getxwork/models/products.dart';
import 'package:flutter/material.dart';
class Cart extends GetxController {
var cartItems = [].obs;
int get count => cartItems.length;
double get totalPrice => cartItems.fold(0, (sum, item) => sum + item.price);
addToCart(Product product) {
cartItems.add(product);
}
}