Commit d125b466 authored by valdi's avatar valdi

succes set ready, queue, and pick up

parent 3814b22d
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:manager_queue/helper/config.dart';
import 'package:manager_queue/models/queue.dart';
import 'package:flutter/material.dart';
......@@ -17,7 +18,7 @@ class ApiQueue {
}
static Future<List<OrderQueue>> getQueue() async {
String apiUrl = "http://192.168.2.142:8000/api/getqueue";
String apiUrl = apiUrlQueue;
// print("Test");
List<OrderQueue> queues = [];
try {
......
......@@ -7,23 +7,21 @@ class ReadyBloc extends Cubit<List<OrderQueue>> {
Future<List<OrderQueue>> getData() async {
var apiQueue = await ApiQueue.getQueue();
return apiQueue;
return apiQueue.where((i) => (i.status == "Ready")).toList();
}
// List<OrderQueue> queues = [
// OrderQueue(id: "1", queue_number: '123', status: 'Ready'),
// OrderQueue(id: "2", queue_number: '1234', status: 'Ready'),
// OrderQueue(id: "3", queue_number: '12345', status: 'queue'),
// OrderQueue(id: "4", queue_number: '123456', status: 'queue'),
// OrderQueue(id: "5", queue_number: '12345633', status: 'Ready'),
// ];
// ReadyBloc() : super(Future.empty);
void queueList() {
getData().then((value) {
// print(value);
emit(value);
});
}
onPressed(OrderQueue thisQueue) {
var index = state.indexOf(thisQueue);
thisQueue.isSelected = !thisQueue.isSelected;
state[index] = thisQueue;
print('berubah');
emit(state);
}
}
import 'package:bloc/bloc.dart';
import 'package:flutter/widgets.dart';
import 'package:manager_queue/models/queue.dart';
class SelectedReadyBloc extends Cubit<List<OrderQueue>> {
SelectedReadyBloc() : super([]);
onPressed(OrderQueue thisQueue) {
if (state.contains(thisQueue)) {
state.remove(thisQueue);
} else {
state.add(thisQueue);
}
print(state);
emit(state);
}
}
......@@ -11,12 +11,12 @@ class QueueCubit extends Cubit<QueueState> {
Future<void> getData() async {
emit(QueueLoading());
Future.delayed(const Duration(milliseconds: 2000), () async {
// Future.delayed(const Duration(milliseconds: 2000), () async {
var apiQueue = await ApiQueue.getQueue();
var data = apiQueue.where((i) => (i.status == "In Queue")).toList();
emit(QueueLoaded(data));
});
// });
}
onPressed(List<OrderQueue> active, OrderQueue toUpdate) {
......
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:manager_queue/models/queue.dart';
import '../api.dart';
part 'ready_state.dart';
class ReadyCubit extends Cubit<ReadyState> {
ReadyCubit() : super(ReadyInitial());
Future<void> getData() async {
emit(ReadyLoading());
// Future.delayed(const Duration(milliseconds: 2000), () async {
var apiQueue = await ApiQueue.getQueue();
var data = apiQueue.where((i) => (i.status == "Ready")).toList();
emit(ReadyLoaded(data));
// });
}
onPressed(List<OrderQueue> active, OrderQueue toUpdate) {
emit(ReadyInitial());
var index = active.indexOf(toUpdate);
toUpdate.isSelectedReady = !toUpdate.isSelectedReady;
active[index] = toUpdate;
emit(ReadyUpdated(active));
}
}
part of 'ready_cubit.dart';
abstract class ReadyState extends Equatable {
const ReadyState();
@override
List<Object> get props => [];
}
class ReadyInitial extends ReadyState {}
class ReadyLoading extends ReadyState {}
class ReadyLoaded extends ReadyState {
final List<OrderQueue> readys;
ReadyLoaded(this.readys);
@override
List<Object> get props => [readys];
}
class ReadyUpdated extends ReadyState {
final List<OrderQueue> readys;
ReadyUpdated(this.readys);
@override
List<Object> get props => [readys];
}
import 'package:mqtt_client/mqtt_browser_client.dart';
const String apiUrlQueue = "http://192.168.2.142:8000/api/getqueue";
const String apiUrlUpdate = "http://192.168.2.142:8000/api/updatequeue";
const String mqttUrl = "ws://dev.ravku.com";
const String queueTopic = "queuetest/1";
const String queueMessage = "updateApi";
const int mqttPort = 1883;
final mqClient = MqttBrowserClient(mqttUrl, "");
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:manager_queue/bloc/queue_bloc.dart';
import 'package:manager_queue/bloc/ready_bloc.dart';
import 'package:manager_queue/cubit/queue_cubit.dart';
import 'package:manager_queue/cubit/ready_cubit.dart';
import 'package:manager_queue/helper/config.dart';
import 'package:manager_queue/main_page.dart';
import 'package:mqtt_client/mqtt_client.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'bloc/selected_queue_bloc.dart';
import 'bloc/selected_ready_bloc.dart';
void main() {
// var prefs = await SharedPreferences.getInstance();
runApp(MyApp());
}
Future<int> runMqTT(BuildContext context) async {
mqClient.logging(on: false);
mqClient.setProtocolV311();
mqClient.keepAlivePeriod = 86400;
mqClient.port = mqttPort;
mqClient.onDisconnected;
mqClient.onConnected;
mqClient.onSubscribed;
// mqClient.pongCallback = pong;
final connMess = MqttConnectMessage()
.withClientIdentifier('Mqtt_MyClientUniqueId')
.withWillTopic('willtopic') // If you set this you must set a will message
.withWillMessage('My Will message')
.startClean() // Non persistent session for testing
.withWillQos(MqttQos.atLeastOnce);
// print('EXAMPLE::Mosquitto client connecting....');
mqClient.connectionMessage = connMess;
try {
await mqClient.connect();
} on NoConnectionException catch (e) {
// Raised by the client when connection fails.
// print('EXAMPLE::client exception - $e');
mqClient.disconnect();
} on SocketException catch (e) {
// Raised by the socket layer
// print('EXAMPLE::socket exception - $e');
mqClient.disconnect();
}
if (mqClient.connectionStatus!.state == MqttConnectionState.connected) {
// print('EXAMPLE::Mosquitto client connected');
} else {
/// Use status here rather than state if you also want the broker return code.
// print(
// 'EXAMPLE::ERROR Mosquitto client connection failed - disconnecting, status is ${mqClient.connectionStatus}');
mqClient.disconnect();
exit(-1);
}
/// Ok, lets try a subscription
// print('EXAMPLE::Subscribing to the queuetest/1 topic');
var topic = queueTopic; // Not a wildcard topic
mqClient.subscribe(topic, MqttQos.atMostOnce);
/// The client has a change notifier object(see the Observable class) which we then listen to to get
/// notifications of published updates to each subscribed topic.
// mqClient.updates!.listen((List<MqttReceivedMessage<MqttMessage?>>? c) {
// final recMess = c![0].payload as MqttPublishMessage;
// final pt =
// MqttPublishPayload.bytesToStringAsString(recMess.payload.message);
// // if (c[0].topic == topic && pt == queueMessage) {
// // context.read<QueueBloc>().queueList();
// // // print("berhasil update API");
// // } else {
// // // print("tidak berhasil dapat message yang sesuai");
// // }
// print('Notifikasi masuk dari topic <${c[0].topic}>, isinya adalah: $pt ');
// print('');
// });
// print('EXAMPLE::Sleeping....');
// await MqttUtilities.asyncSleep(60);
// /// Finally, unsubscribe and exit gracefully
// print('EXAMPLE::Unsubscribing');
// mqClient.unsubscribe(topic);
/// Wait for the unsubscribe message from the broker if you wish.
// await MqttUtilities.asyncSleep(2);
// print('EXAMPLE::Disconnecting');
// mqClient.disconnect();
return 0;
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
runMqTT(context);
return MaterialApp(
initialRoute: '/',
routes: {
......@@ -22,6 +107,8 @@ class MyApp extends StatelessWidget {
BlocProvider(create: (_) => ReadyBloc()),
BlocProvider(create: (_) => SelectedQueueBloc()),
BlocProvider(create: (_) => QueueCubit()),
BlocProvider(create: (_) => SelectedReadyBloc()),
BlocProvider(create: (_) => ReadyCubit()),
], child: MainPage()),
},
debugShowCheckedModeBanner: false,
......
This diff is collapsed.
......@@ -3,12 +3,14 @@ class OrderQueue {
final String queue_number;
final String status;
bool isSelected = false;
bool isSelectedReady = false;
OrderQueue(
{required this.id,
required this.queue_number,
required this.status,
required this.isSelected});
required this.isSelected,
required this.isSelectedReady});
factory OrderQueue.createOrderQueue(Map<String, dynamic> json) {
return OrderQueue(
......@@ -16,6 +18,7 @@ class OrderQueue {
queue_number: json['queue_number'].toString(),
status: json['status'].toString(),
isSelected: false,
isSelectedReady: false,
);
}
}
......@@ -50,6 +50,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.15.0"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
cupertino_icons:
dependency: "direct main"
description:
......@@ -64,6 +71,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
event_bus:
dependency: transitive
description:
name: event_bus
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
fake_async:
dependency: transitive
description:
......@@ -71,6 +85,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
ffi:
dependency: transitive
description:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
file:
dependency: transitive
description:
name: file
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.2"
flutter:
dependency: "direct main"
description: flutter
......@@ -95,6 +123,11 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
http:
dependency: "direct main"
description:
......@@ -109,6 +142,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
js:
dependency: transitive
description:
name: js
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.4"
lints:
dependency: transitive
description:
......@@ -137,6 +177,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.0"
mqtt_client:
dependency: "direct main"
description:
name: mqtt_client
url: "https://pub.dartlang.org"
source: hosted
version: "9.6.5"
multi_select_flutter:
dependency: "direct main"
description:
......@@ -158,6 +205,48 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.1"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.5"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
platform:
dependency: transitive
description:
name: platform
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
process:
dependency: transitive
description:
name: process
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.4"
provider:
dependency: transitive
description:
......@@ -165,6 +254,62 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.2"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.13"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
shared_preferences_ios:
dependency: transitive
description:
name: shared_preferences_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
sky_engine:
dependency: transitive
description: flutter
......@@ -219,6 +364,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
uuid:
dependency: "direct main"
description:
name: uuid
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.6"
vector_math:
dependency: transitive
description:
......@@ -226,6 +378,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
win32:
dependency: transitive
description:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.1"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0+1"
sdks:
dart: ">=2.16.1 <3.0.0"
flutter: ">=1.16.0"
flutter: ">=2.8.0"
......@@ -33,7 +33,10 @@ dependencies:
sdk: flutter
flutter_bloc: ^8.0.1
http: ^0.13.4
mqtt_client: ^9.6.5
multi_select_flutter: ^4.0.0
shared_preferences: ^2.0.13
uuid: ^3.0.6
dev_dependencies:
flutter_lints: ^1.0.0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment