From 07aa82a504ebf4cb96178cd79e05006001b0acb1 Mon Sep 17 00:00:00 2001 From: Augusto Date: Fri, 28 Jul 2023 12:27:25 -0300 Subject: [PATCH] fix to low cost --- .../shared/controllers/cart_controller.dart | 8 +++- lib/src/views/client/cart/cart_screen.dart | 11 ++++- lib/src/views/client/home/home_screen.dart | 2 +- lib/src/widgets/appbar_custom.dart | 44 +++++++++++++++++-- 4 files changed, 58 insertions(+), 7 deletions(-) diff --git a/lib/src/shared/controllers/cart_controller.dart b/lib/src/shared/controllers/cart_controller.dart index 7e1be28..d75511f 100644 --- a/lib/src/shared/controllers/cart_controller.dart +++ b/lib/src/shared/controllers/cart_controller.dart @@ -8,7 +8,9 @@ class CartController extends GetxController { RxBool isLoading = false.obs; Future add(List idItem) async { - await cartRepository.add(idItem); + await cartRepository.add(idItem).then( + (value) => cartRepository.client.post(table: 'event'), + ); } Stream getByLikeStream(UserModel userModel) async* { @@ -22,6 +24,8 @@ class CartController extends GetxController { } Future delete(String id) async { - await cartRepository.delete(id); + await cartRepository + .delete(id) + .then((value) => cartRepository.client.post(table: 'event')); } } diff --git a/lib/src/views/client/cart/cart_screen.dart b/lib/src/views/client/cart/cart_screen.dart index 1560300..26bb4b7 100644 --- a/lib/src/views/client/cart/cart_screen.dart +++ b/lib/src/views/client/cart/cart_screen.dart @@ -9,15 +9,23 @@ import 'package:pizzaria/src/shared/models/user_model.dart'; import 'package:pizzaria/src/shared/services/util_service.dart'; import 'package:pizzaria/src/shared/themes/colors/color_schemes.g.dart'; -class CartScreen extends StatelessWidget { +class CartScreen extends StatefulWidget { CartScreen({super.key}); + @override + State createState() => _CartScreenState(); +} + +class _CartScreenState extends State { //Generate list items in cart. final List items = []; + final List cart = []; final cartController = CartController(); + final orderController = OrderController(); + final utilService = UtilService(); @override @@ -68,6 +76,7 @@ class CartScreen extends StatelessWidget { IconButton( onPressed: () async { await cartController.delete(cartModel.id!); + setState(() {}); }, icon: Icon( Icons.delete, diff --git a/lib/src/views/client/home/home_screen.dart b/lib/src/views/client/home/home_screen.dart index a7bb98d..c1a26fa 100644 --- a/lib/src/views/client/home/home_screen.dart +++ b/lib/src/views/client/home/home_screen.dart @@ -10,7 +10,7 @@ import 'package:pizzaria/src/views/client/user/comon_user_details_screen.dart'; import 'package:pizzaria/src/widgets/appbar_custom.dart'; class HomeScreen extends StatefulWidget { - HomeScreen({super.key}); + const HomeScreen({super.key}); @override State createState() => _HomeScreenState(); diff --git a/lib/src/widgets/appbar_custom.dart b/lib/src/widgets/appbar_custom.dart index 34186c5..2f20874 100644 --- a/lib/src/widgets/appbar_custom.dart +++ b/lib/src/widgets/appbar_custom.dart @@ -1,10 +1,14 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:pizzaria/src/shared/constants/app.dart'; import 'package:pizzaria/src/shared/controllers/cart_controller.dart'; import 'package:pizzaria/src/shared/models/user_model.dart'; import 'package:pizzaria/src/shared/themes/colors/color_schemes.g.dart'; import 'package:pizzaria/src/views/auth/signin_screen.dart'; import 'package:pizzaria/src/views/client/cart/cart_screen.dart'; +import 'package:stomp_dart_client/stomp.dart'; +import 'package:stomp_dart_client/stomp_config.dart'; +import 'package:stomp_dart_client/stomp_frame.dart'; class AppBarCustom extends StatefulWidget { const AppBarCustom({super.key}); @@ -64,10 +68,37 @@ class Avatar extends StatelessWidget { } //Cart -class Cart extends StatelessWidget { +class Cart extends StatefulWidget { Cart({super.key}); + @override + State createState() => _CartState(); +} + +class _CartState extends State { final cartController = CartController(); + late StompClient stompClient; + + void onConnect(StompClient stompClient, StompFrame stompFrame) { + stompClient.subscribe( + destination: "/topic/message", + callback: (frame) => setState(() {}), + ); + } + + @override + void initState() { + super.initState(); + + stompClient = StompClient( + config: StompConfig.SockJS( + url: "${AppConstants.baseUrl}/ws-message", + onConnect: (stompFrame) => onConnect(stompClient, stompFrame), + ), + ); + + stompClient.activate(); + } @override Widget build(BuildContext context) { @@ -90,8 +121,8 @@ class Cart extends StatelessWidget { Positioned( child: CircleAvatar( radius: 11, - child: StreamBuilder( - stream: cartController.getByLikeStream(userModel), + child: FutureBuilder( + future: cartController.getByUserId(userModel), builder: (context, snapshot) { if (!snapshot.hasData) { return const Center( @@ -112,6 +143,13 @@ class Cart extends StatelessWidget { size: 32, ); } + + @override + void dispose() { + stompClient.deactivate(); + + super.dispose(); + } } Future showScreenLogin(BuildContext context) {