Commit 6cf6418a authored by valdi's avatar valdi

make element to mainpage

parent d934d112
// ignore_for_file: non_constant_identifier_names, avoid_print, prefer_const_constructors
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:google_fonts/google_fonts.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.dart';
import 'package:manager_queue/models/queue.dart';
import 'package:mqtt_client/mqtt_client.dart';
import 'package:http/http.dart' as http;
class MiddleWidget extends StatefulWidget {
const MiddleWidget({Key? key}) : super(key: key);
@override
State<MiddleWidget> createState() => _MiddleWidgetState();
}
class _MiddleWidgetState extends State<MiddleWidget> {
List clearData = [OrderQueue];
Future setToClear() async {
// print(readySelected);
var apiUrl = apiUrlClear;
final String? session_keys = prefs.getString('session_key');
final String? userId = prefs.getString('user_id');
// print(apiUrl);
Map setClear = {"session_key": session_keys, "user_id": userId};
var dataClear = jsonEncode(setClear);
var apiResult = await http.post(Uri.parse(apiUrl), body: dataClear);
var jsonObject = jsonDecode(apiResult.body)['status'];
if (jsonObject == "ok") {
context.read<ReadyCubit>().getData();
context.read<QueueCubit>().getData();
final pubTopic = queueTopic;
final builder = MqttClientPayloadBuilder();
builder.addString(queueMessage);
mqClient.publishMessage(pubTopic, MqttQos.exactlyOnce, builder.payload!);
} else {
print("gabisa");
}
}
@override
Widget build(BuildContext context) {
return Flexible(
flex: 1,
child: Container(
width: MediaQuery.of(context).size.width * 0.2,
height: MediaQuery.of(context).size.height * 1,
color: Colors.blueGrey,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
InkWell(
onTap: () {
// print("clear");
showDialog(
context: context,
builder: (BuildContext context) => AlertDialog(
title: Text("Clear"),
content: Text("Are you sure to clear data?"),
actions: <Widget>[
TextButton(
onPressed: () => Navigator.pop(context),
child: Text('Cancel'),
),
TextButton(
onPressed: () => Navigator.pop(context, setToClear()),
child: Text('OK'),
),
],
),
);
},
child: Container(
width: MediaQuery.of(context).size.width * 0.18,
height: MediaQuery.of(context).size.height * 0.07,
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(20),
),
color: Colors.red,
),
alignment: Alignment.center,
child: Text(
"CLEAR",
style: GoogleFonts.openSans(
fontSize: 30, fontWeight: FontWeight.w700),
),
),
),
],
),
),
);
}
}
// ignore_for_file: non_constant_identifier_names, unused_local_variable, sized_box_for_whitespace, prefer_const_constructors
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:google_fonts/google_fonts.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/helper/state.dart';
import 'package:manager_queue/main.dart';
import 'package:http/http.dart' as http;
import 'package:mqtt_client/mqtt_client.dart';
class OrderQueueWidget extends StatefulWidget {
const OrderQueueWidget({Key? key}) : super(key: key);
@override
State<OrderQueueWidget> createState() => _OrderQueueWidgetState();
}
class _OrderQueueWidgetState extends State<OrderQueueWidget> {
late List<String> queueSelected = [];
void setToReady(List queueSelecteds) async {
var apiUrl = apiUrlUpdate;
final String? session_keys = prefs.getString('session_key');
final String? userId = prefs.getString('user_id');
// print("iniii sesssiiiioooonnn keeeeyy $session_keys");
// print("iniii USER IDDDDDDD $userId");
for (var i in queueSelecteds) {
Map setReady = {
"session_key": session_keys,
"user_id": userId,
"id": i.toString(),
"status": 1
};
var dataReady = jsonEncode(setReady);
var apiResult = await http.post(Uri.parse(apiUrl), body: dataReady);
// print(apiResult);
// var jsonObject = jsonDecode(apiResult.body)['status'];
// if (jsonObject == true) {
// context.read<QueueCubit>().getData();
// context.read<ReadyCubit>().getData();
// } else {
// print("tidak berhasil");
// }
}
context.read<QueueCubit>().getData();
context.read<ReadyCubit>().getData();
final pubTopic = queueTopic;
final builder = MqttClientPayloadBuilder();
builder.addString(queueMessage);
mqClient.publishMessage(pubTopic, MqttQos.exactlyOnce, builder.payload!);
queueSelected = [];
}
@override
Widget build(BuildContext context) {
return Flexible(
flex: 2,
child: Container(
color: Colors.black12,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width * 0.4,
height: MediaQuery.of(context).size.height * 0.1,
color: Colors.lightBlue,
alignment: Alignment.center,
child: Text(
"QUEUE",
style: GoogleFonts.openSans(
fontSize: MediaQuery.of(context).size.height * 0.03,
fontWeight: FontWeight.w700),
),
),
Container(
width: MediaQuery.of(context).size.width * 0.38,
height: MediaQuery.of(context).size.height * 0.75,
child: MediaQuery.removePadding(
context: context,
removeTop: true,
child: BlocConsumer<QueueCubit, QueueState>(
listener: (context, state) {
// print('listener');
// print(state);
},
builder: (context, state) {
if (state is QueueLoading) {
return SizedBox();
// return CircularProgressIndicator();
} else if (state is QueueLoaded) {
return GridView.builder(
itemCount: state.queues.length,
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 5,
childAspectRatio: 2),
itemBuilder: (BuildContext context, int index) {
var thisQueue = state.queues[index];
return Material(
borderRadius: BorderRadius.circular(10),
child: InkWell(
onTap: () {
context
.read<QueueCubit>()
.onPressed(state.queues, thisQueue);
},
child: Card(
color: cardColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
child: Center(
child: Text(
"Pesanan " + thisQueue.queue_number,
style: GoogleFonts.openSans(fontSize: 20),
))),
),
);
},
);
} else if (state is QueueUpdated) {
return GridView.builder(
itemCount: state.queues.length,
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 5,
childAspectRatio: 2),
itemBuilder: (BuildContext context, int index) {
var thisQueue = state.queues[index];
if (thisQueue.isSelected) {
if (!queueSelected.contains(thisQueue.id)) {
queueSelected.add(thisQueue.id);
}
} else {
queueSelected.remove(thisQueue.id);
}
return Material(
borderRadius: BorderRadius.circular(10),
child: InkWell(
onTap: () {
context
.read<QueueCubit>()
.onPressed(state.queues, thisQueue);
},
child: Card(
color: thisQueue.isSelected
? Colors.lightGreen
: cardColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
child: Center(
child: Text(
"Pesanan " + thisQueue.queue_number,
style: GoogleFonts.openSans(fontSize: 20),
))),
),
);
},
);
} else {
return SizedBox();
}
},
),
),
),
InkWell(
onTap: () {
setToReady(queueSelected);
},
child: Container(
width: MediaQuery.of(context).size.width * 0.4,
height: MediaQuery.of(context).size.height * 0.1,
color: Colors.lightBlue,
alignment: Alignment.center,
child: InkWell(
onTap: () => setToReady(queueSelected),
child: Text(
"SET TO READY",
style: GoogleFonts.openSans(
fontSize: 30, fontWeight: FontWeight.w700),
),
),
),
),
],
),
),
);
}
}
This diff is collapsed.
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