Skip to content

Commit

Permalink
chapter 26:finish
Browse files Browse the repository at this point in the history
  • Loading branch information
yagnik2411 committed Jun 2, 2023
1 parent fca84f4 commit 21ca0e0
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 27 deletions.
16 changes: 10 additions & 6 deletions lib/models/cart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,7 @@ class CartModel {
num get totalPrice =>
items.fold(0, (total, current) => total + current.price);

void add(Item item) {
_itemIds.add(item.id);
}

void remove(Item item) {
_itemIds.remove(item.id);
}

}

Expand All @@ -40,3 +34,13 @@ class AddMutation extends VxMutation<MyStore> {
store!.cart._itemIds.add(item.id);
}
}

class RemoveMutation extends VxMutation<MyStore> {
final Item item;

RemoveMutation(this.item);
@override
perform() {
store!.cart._itemIds.remove(item.id);
}
}
50 changes: 30 additions & 20 deletions lib/pages/cart_page.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_catalog/core/mystore.dart';
import 'package:velocity_x/velocity_x.dart';
Expand Down Expand Up @@ -28,15 +27,25 @@ class CartPage extends StatelessWidget {
}

class _cartTotal extends StatelessWidget {
final CartModel _cart = (VxState.store as MyStore).cart;
final CartModel _cart = (VxState.store as MyStore).cart;
@override
Widget build(BuildContext context) {
return SizedBox(
height: 200,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
"\$${_cart.totalPrice}".text.xl4.color(context.theme.colorScheme.secondary).make(),
VxConsumer(
notifications: {},
mutations: const {RemoveMutation},
builder: (context, _, status) {
return "\$${_cart.totalPrice}"
.text
.xl5
.color(context.theme.colorScheme.secondary)
.make();
},
),
30.widthBox,
ElevatedButton(
onPressed: () {
Expand All @@ -46,7 +55,6 @@ class _cartTotal extends StatelessWidget {
.color(Colors.white)
.center
.medium

.make(),
backgroundColor: context.theme.colorScheme.primary,
elevation: 0,
Expand All @@ -61,7 +69,7 @@ class _cartTotal extends StatelessWidget {
borderRadius: BorderRadius.circular(30)),
double.maxFinite,
),
));
));
},
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(
Expand All @@ -77,22 +85,24 @@ class _cartTotal extends StatelessWidget {
}
}

class _cartList extends StatelessWidget{
final CartModel _cart = (VxState.store as MyStore).cart;
class _cartList extends StatelessWidget {
final CartModel _cart = (VxState.store as MyStore).cart;
@override
Widget build(BuildContext context) {
return _cart.items.isEmpty? "Nothing To Show".text.xl3.makeCentered() :ListView.builder(
itemCount: _cart.items.length,
itemBuilder: (context, index) => ListTile(
leading: Icon(Icons.done),
trailing: IconButton(
icon: Icon(Icons.remove_circle_outline),
onPressed: () {
_cart.remove(_cart.items[index]);

},
),
title: _cart.items[index].name.text.make(),
));
VxState.watch(context, on: [RemoveMutation]);
return _cart.items.isEmpty
? "Nothing To Show".text.xl3.makeCentered()
: ListView.builder(
itemCount: _cart.items.length,
itemBuilder: (context, index) => ListTile(
leading: Icon(Icons.done),
trailing: IconButton(
icon: Icon(Icons.remove_circle_outline),
onPressed: () {
RemoveMutation(_cart.items[index]);
},
),
title: _cart.items[index].name.text.make(),
));
}
}
2 changes: 1 addition & 1 deletion lib/pages/homepage_widgets/addtocart.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class AddToCart extends StatelessWidget {
final CartModel _cart = (VxState.store as MyStore).cart;
@override
Widget build(BuildContext context) {
VxState.watch(context, on: [AddMutation]);
VxState.watch(context, on: [AddMutation,RemoveMutation]);
bool isInCart = _cart.items.contains(catalog) ? true : false;
return ElevatedButton(
onPressed: () {
Expand Down

0 comments on commit 21ca0e0

Please sign in to comment.