Skip to content

Commit

Permalink
websocket controller
Browse files Browse the repository at this point in the history
  • Loading branch information
auguzsto committed Jul 29, 2023
1 parent 0d76975 commit 2a3bb3d
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 45 deletions.
33 changes: 33 additions & 0 deletions lib/src/shared/controllers/ws_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import 'package:flutter/material.dart';
import 'package:pizzaria/src/shared/constants/app.dart';
import 'package:stomp_dart_client/stomp.dart';
import 'package:stomp_dart_client/stomp_config.dart';
import 'package:stomp_dart_client/stomp_frame.dart';

late StompClient _stompClient;
ValueNotifier<bool> _listener = ValueNotifier(false);

void _onConnect(StompClient stompClient, StompFrame stompFrame) {
print(stompFrame.command);
stompClient.subscribe(
destination: '/topic/message',
callback: (frame) {
if (_listener.value) {
_listener.value = false;
} else {
_listener.value = true;
}
},
);
}

class WsController extends ChangeNotifier {
StompClient get client => _stompClient = StompClient(
config: StompConfig.SockJS(
url: "${AppConstants.baseUrl}/ws-message",
onConnect: (stompFrame) => _onConnect(_stompClient, stompFrame),
),
);

ValueNotifier<bool> get listener => _listener;
}
34 changes: 10 additions & 24 deletions lib/src/views/admin/home/home_screen.dart
Original file line number Diff line number Diff line change
@@ -1,17 +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/order_controller.dart';
import 'package:pizzaria/src/shared/controllers/ws_controller.dart';
import 'package:pizzaria/src/shared/models/order_model.dart';
import 'package:pizzaria/src/views/admin/home/constants/home_admin.dart';
import 'package:pizzaria/src/views/admin/item/item_screen.dart';
import 'package:pizzaria/src/shared/controllers/auth_controller.dart';
import 'package:pizzaria/src/shared/themes/colors/color_schemes.g.dart';
import 'package:pizzaria/src/shared/services/util_service.dart';
import 'package:pizzaria/src/views/admin/user/user_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 HomeAdminScreen extends StatefulWidget {
const HomeAdminScreen({super.key});
Expand All @@ -20,31 +17,20 @@ class HomeAdminScreen extends StatefulWidget {
State<HomeAdminScreen> createState() => _HomeAdminScreenState();
}

class _HomeAdminScreenState extends State<HomeAdminScreen> {
late StompClient stompClient;

void onConnect(StompClient stompClient, StompFrame stompFrame) {
stompClient.subscribe(
destination: '/topic/message',
callback: (frame) {
if (frame.body != null) {
setState(() {});
}
});
}
final wsController = WsController();

class _HomeAdminScreenState extends State<HomeAdminScreen> {
@override
void initState() {
super.initState();

stompClient = StompClient(
config: StompConfig.SockJS(
url: "${AppConstants.baseUrl}/ws-message",
onConnect: (stompFrame) => onConnect(stompClient, stompFrame),
),
);
wsController.listener.addListener(() {
if (mounted) {
setState(() {});
}
});

stompClient.activate();
wsController.client.activate();
}

@override
Expand Down Expand Up @@ -200,7 +186,7 @@ class _HomeAdminScreenState extends State<HomeAdminScreen> {

@override
void dispose() {
stompClient.deactivate();
wsController.client.deactivate();
super.dispose();
}
}
29 changes: 8 additions & 21 deletions lib/src/widgets/appbar_custom.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
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/controllers/ws_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});
Expand Down Expand Up @@ -77,27 +74,19 @@ class Cart extends StatefulWidget {

class _CartState extends State<Cart> {
final cartController = CartController();
late StompClient stompClient;

void onConnect(StompClient stompClient, StompFrame stompFrame) {
stompClient.subscribe(
destination: "/topic/message",
callback: (frame) => setState(() {}),
);
}
final wsController = WsController();

@override
void initState() {
super.initState();

stompClient = StompClient(
config: StompConfig.SockJS(
url: "${AppConstants.baseUrl}/ws-message",
onConnect: (stompFrame) => onConnect(stompClient, stompFrame),
),
);
wsController.listener.addListener(() {
if (mounted) {
setState(() {});
}
});

stompClient.activate();
wsController.client.activate();
}

@override
Expand Down Expand Up @@ -146,8 +135,6 @@ class _CartState extends State<Cart> {

@override
void dispose() {
stompClient.deactivate();

super.dispose();
}
}
Expand Down

0 comments on commit 2a3bb3d

Please sign in to comment.