Commit a9203a16 authored by valdi's avatar valdi

fungsi

parent 7448f38f
// import 'dart:collection';
// import 'dart:convert';
// import 'package:http/http.dart' as http;
// class QueueApi {
// String id, queue_number, status;
// QueueApi({required this.id, required this.queue_number, required this.status});
// }
// // List<Queue> Queues = [
// // Queue(id: '1', nomor: '1', status: 'ready'),
// // Queue(id: '2', nomor: '122', status: 'ready'),
// // Queue(id: '3', nomor: '133', status: 'queue'),
// // Queue(id: '4', nomor: '144', status: 'ready'),
// // Queue(id: '5', nomor: '155', status: 'ready'),
// // Queue(id: '6', nomor: '166', status: 'queue'),
// // ];
// factory QueueApi.createQueue(Map<String, dynamic> json) {
// return Queue(json['id'].toString(), json['queue_number'], json['status']);
// }
// static Future<List<QueueApi>> GetQueue() async {
// String apiUrl = "http://192.168.2.142:8000/api/getqueue";
// var apiResult = await http.get(Uri.parse(apiUrl));
// var jsonObject = jsonDecode(apiResult.body);
// List<dynamic> listQueue = (jsonObject as Map<String, dynamic>)['results'];
// List<QueueApi> queueItem = [];
// for (int i = 0; i < listQueue.length; i++)
// queueItem.add(QueueApi.createQueue(listQueue[i]));
// return queueItem;
// }
\ No newline at end of file
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:manager_queue/models/queue.dart';
import 'package:flutter/material.dart';
class ApiQueue {
final String id;
final String queue_number;
final String status;
ApiQueue(this.id, this.queue_number, this.status);
factory ApiQueue.createQueue(Map<String, dynamic> json) {
return ApiQueue(
json['id'].toString(), json['queue_number'].toString(), json['status']);
}
static Future<List<OrderQueue>> getQueue() async {
String apiUrl = "http://192.168.2.142:8000/api/getqueue";
List<OrderQueue> queues = [];
try {
var apiResult = await http.get(Uri.parse(apiUrl));
var jsonObject = jsonDecode(apiResult.body);
List<dynamic> listQueue = (jsonObject as Map<dynamic, dynamic>)['data'];
for (int i = 0; i < listQueue.length; i++) {
queues.add(OrderQueue.createOrderQueue(listQueue[i]));
}
// ignore: empty_catches
} catch (e) {}
return queues;
}
}
import 'package:bloc/bloc.dart';
import 'package:manager_queue/api.dart';
import 'package:manager_queue/models/queue.dart';
class QueueBloc extends Cubit<List<OrderQueue>> {
QueueBloc() : super([]);
Future<List<OrderQueue>> getData() async {
var apiQueue = await ApiQueue.getQueue();
return apiQueue;
}
// 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'),
// ];
// QueueBloc() : super(Future.empty);
void queueList() {
getData().then((value) {
// print(value);
emit(value);
});
}
}
import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:manager_queue/data.dart';
// import 'package:manager_queue/data.dart';
import 'package:manager_queue/api.dart';
import 'package:manager_queue/bloc/queue_bloc.dart';
import 'package:manager_queue/models/queue.dart';
class MainPage extends StatefulWidget {
@override
......@@ -10,25 +13,57 @@ class MainPage extends StatefulWidget {
class _MainPageState extends State<MainPage> {
// var queue = ['1', '4', '5'];
List<Queue> orderQueue = [];
List<Queue> orderReady = [];
var queueSelected = [];
List<dynamic> orderQueue = [];
List<dynamic> orderReady = [];
List<Queue> queueSelected = [];
List<Queue> readySelected = [];
List<Queue> pickUp = [];
List<dynamic> orderQueueList = [];
void getQueue() async {
var apiQueue = await ApiQueue.getQueue();
setState(() {
orderQueue = apiQueue;
});
}
@override
void initState() {
orderQueue = Queues.where((i) => (i.status == 'queue')).toList();
orderReady = Queues.where((i) => (i.status == 'ready')).toList();
orderQueueList = orderQueue.where((i) => (i.status == 'In Queue')).toList();
orderReady = orderQueue.where((i) => (i.status == 'Ready')).toList();
// TODO: implement initState
super.initState();
}
void setToReady(List<Queue> _queue) {
orderQueue.remove(_queue);
void setToReady(List<Queue> queueSelected) {
for (var i in queueSelected) {
orderQueue.remove(i);
}
orderReady.addAll(queueSelected);
}
void setToQueue(List<Queue> readySelected) {
for (var i in readySelected) {
orderReady.remove(i);
}
orderReady.addAll(_queue);
orderQueue.addAll(readySelected);
}
void setToPickUp(List<Queue> readySelected) {
for (var i in readySelected) {
orderReady.remove(i);
}
pickUp.addAll(readySelected);
}
// void queueSelectItem(List<Queue> _queueselect) {
// }
@override
Widget build(BuildContext context) {
return MaterialApp(
......@@ -60,14 +95,14 @@ class _MainPageState extends State<MainPage> {
child: MediaQuery.removePadding(
context: context,
removeTop: true,
child: GridView(
child: GridView.builder(
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 5,
childAspectRatio: 2),
children: orderQueue.map((queueItem) {
itemBuilder: (context, index) {
return Material(
borderRadius: BorderRadius.circular(10),
child: InkWell(
......@@ -93,9 +128,10 @@ class _MainPageState extends State<MainPage> {
child: Text(
queueSelected.contains(queueItem)
? "Pesanan " +
queueItem.nomor +
queueItem.queue_number +
" ✅"
: "Pesanan " + queueItem.nomor,
: "Pesanan " +
queueItem.queue_number,
style: TextStyle(fontSize: 20),
),
),
......@@ -103,7 +139,7 @@ class _MainPageState extends State<MainPage> {
),
),
);
}).toList(),
},
),
),
),
......@@ -112,12 +148,23 @@ class _MainPageState extends State<MainPage> {
height: 100,
color: Colors.lightBlue,
alignment: Alignment.center,
child: Material(
color: Colors.lightBlue,
child: InkWell(
onTap: () {
setState(() {
if (orderReady.contains(queueSelected)) {
queueSelected.remove(queueSelected);
} else {
orderReady.addAll(queueSelected);
}
// print(queueSelected.toString());
});
},
splashColor: Colors.amber,
child: GestureDetector(
onTap: () => setToReady(
orderReady,
),
onTap: () => setToReady(queueSelected),
child: Text(
"SET TO READY",
style: TextStyle(
......@@ -126,6 +173,7 @@ class _MainPageState extends State<MainPage> {
),
),
),
),
],
),
),
......@@ -207,17 +255,35 @@ class _MainPageState extends State<MainPage> {
mainAxisSpacing: 5,
childAspectRatio: 2),
children: orderReady.map((readyItem) {
return Card(
return Material(
borderRadius: BorderRadius.circular(10),
child: InkWell(
onTap: () {
setState(() {
if (readySelected.contains(readyItem)) {
readySelected.remove(readyItem);
} else {
readySelected.add(readyItem);
}
print(readySelected.toString());
});
},
child: Card(
color: Colors.black38,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
child: Center(
child: Text(
"Pesanan " + readyItem.nomor,
readySelected.contains(readyItem)
? "Pesanan " + readyItem.nomor + " ✅"
: "Pesanan " + readyItem.nomor,
style: TextStyle(fontSize: 20),
),
),
),
),
);
}).toList(),
),
......@@ -231,10 +297,28 @@ class _MainPageState extends State<MainPage> {
height: 100,
color: Colors.green,
alignment: Alignment.center,
child: InkWell(
onTap: () {
setState(() {
if (orderQueue.contains(readySelected)) {
readySelected.remove(readySelected);
} else {
orderQueue.addAll(readySelected);
}
// print(queueSelected.toString());
});
},
splashColor: Colors.amber,
child: GestureDetector(
onTap: () => setToQueue(readySelected),
child: Text(
"SET TO QUEUE",
style: TextStyle(
fontSize: 30, fontWeight: FontWeight.w700),
fontSize: 30,
fontWeight: FontWeight.w700),
),
),
),
),
),
......@@ -244,10 +328,27 @@ class _MainPageState extends State<MainPage> {
height: 100,
color: Colors.black26,
alignment: Alignment.center,
child: InkWell(
onTap: () {
setState(() {
if (pickUp.contains(readySelected)) {
readySelected.remove(readySelected);
} else {
pickUp.addAll(readySelected);
}
// print(queueSelected.toString());
});
},
child: GestureDetector(
onTap: () => setToPickUp(readySelected),
child: Text(
"PICK UP",
style: TextStyle(
fontSize: 30, fontWeight: FontWeight.w700),
fontSize: 30,
fontWeight: FontWeight.w700),
),
),
),
),
),
......
class OrderQueue {
final String id;
// ignore: non_constant_identifier_names
final String queue_number;
final String status;
OrderQueue(
// ignore: non_constant_identifier_names
{required this.id,
required this.queue_number,
required this.status});
factory OrderQueue.createOrderQueue(Map<String, dynamic> json) {
return OrderQueue(
id: json['id'].toString(),
queue_number: json['queue_number'].toString(),
status: json['status'].toString(),
);
}
}
// import 'package:flutter/material.dart';
// import 'package:flutter_bloc/flutter_bloc.dart';
// import 'package:manager_queue/bloc/queue_bloc.dart';
// import 'package:manager_queue/data.dart';
// class OrderQueue extends StatefulWidget {
// const OrderQueue({Key? key}) : super(key: key);
// @override
// _OrderQueueState createState() => _OrderQueueState();
// }
// class _OrderQueueState extends State<OrderQueue> {
// List<Queue> orderQueue = [];
// List<Queue> orderReady = [];
// List<Queue> queueSelected = [];
// @override
// void initState() {
// orderQueue = Queues.where((i) => (i.status == 'queue')).toList();
// orderReady = Queues.where((i) => (i.status == 'ready')).toList();
// // TODO: implement initState
// super.initState();
// }
// void setToReady(List<Queue> queueSelected) {
// for (var i in queueSelected) {
// orderQueue.remove(i);
// }
// orderReady.addAll(queueSelected);
// }
// @override
// Widget build(BuildContext context) {
// return Container(
// width: 700,
// height: 700,
// child: MediaQuery.removePadding(
// context: context,
// removeTop: true,
// child: GridView(
// gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
// crossAxisCount: 2,
// crossAxisSpacing: 10,
// mainAxisSpacing: 5,
// childAspectRatio: 2),
// children: orderQueue.map((queueItem) {
// return Material(
// borderRadius: BorderRadius.circular(10),
// child: InkWell(
// onTap: () {
// setState(() {
// if (queueSelected.contains(queueItem)) {
// queueSelected.remove(queueItem);
// } else {
// queueSelected.add(queueItem);
// }
// print(queueSelected.toString());
// });
// },
// child: Card(
// color: Colors.black38,
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(10),
// ),
// child: GestureDetector(
// onTap: () {},
// child: Center(
// child: Text(
// queueSelected.contains(queueItem)
// ? "Pesanan " + queueItem.nomor + " ✅"
// : "Pesanan " + queueItem.nomor,
// style: TextStyle(fontSize: 20),
// ),
// ),
// ),
// ),
// ),
// );
// }).toList(),
// ),
// ),
// );
// }
// }
// class OrderReady extends StatefulWidget {
// const OrderReady({Key? key}) : super(key: key);
// @override
// _OrderReadyState createState() => _OrderReadyState();
// }
// class _OrderReadyState extends State<OrderReady> {
// @override
// Widget build(BuildContext context) {
// return Container();
// }
// }
......@@ -8,6 +8,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.8.2"
bloc:
dependency: transitive
description:
name: bloc
url: "https://pub.dartlang.org"
source: hosted
version: "8.0.2"
boolean_selector:
dependency: transitive
description:
......@@ -62,6 +69,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_bloc:
dependency: "direct main"
description:
name: flutter_bloc
url: "https://pub.dartlang.org"
source: hosted
version: "8.0.1"
flutter_lints:
dependency: "direct dev"
description:
......@@ -116,6 +130,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.0"
nested:
dependency: transitive
description:
name: nested
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
path:
dependency: transitive
description:
......@@ -123,6 +144,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
provider:
dependency: transitive
description:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.2"
sky_engine:
dependency: transitive
description: flutter
......@@ -186,3 +214,4 @@ packages:
version: "2.1.1"
sdks:
dart: ">=2.16.1 <3.0.0"
flutter: ">=1.16.0"
......@@ -27,18 +27,13 @@ environment:
# the latest version available on pub.dev. To see which dependencies have newer
# versions available, run `flutter pub outdated`.
dependencies:
cupertino_icons: ^1.0.2
flutter:
sdk: flutter
flutter_bloc: ^8.0.1
http: ^0.13.4
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
# The "flutter_lints" package below contains a set of recommended lints to
# encourage good coding practices. The lint set provided by the package is
......@@ -46,10 +41,11 @@ dev_dependencies:
# package. See that file for information about deactivating specific lint
# rules and activating additional ones.
flutter_lints: ^1.0.0
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
......@@ -57,18 +53,14 @@ flutter:
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
......
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