Commit 3ea85076 authored by valdi's avatar valdi

panggil api

parent a9203a16
......@@ -12,12 +12,13 @@ class ApiQueue {
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']);
return ApiQueue(json['id'].toString(), json['queue_number'].toString(),
json['status'].toString());
}
static Future<List<OrderQueue>> getQueue() async {
String apiUrl = "http://192.168.2.142:8000/api/getqueue";
// print("Test");
List<OrderQueue> queues = [];
try {
var apiResult = await http.get(Uri.parse(apiUrl));
......
import 'package:bloc/bloc.dart';
import 'package:manager_queue/api.dart';
import 'package:manager_queue/models/queue.dart';
class ReadyBloc extends Cubit<List<OrderQueue>> {
ReadyBloc() : 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'),
// ];
// ReadyBloc() : super(Future.empty);
void queueList() {
getData().then((value) {
// print(value);
emit(value);
});
}
}
class Queue {
String id, nomor, status;
Queue({required this.id, required this.nomor, required this.status});
static where(bool Function(dynamic i) param0) {}
}
List<Queue> Queues = [
......
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/main_page.dart';
void main() {
......@@ -11,7 +14,10 @@ class MyApp extends StatelessWidget {
return MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => MainPage(),
'/': (context) => MultiBlocProvider(providers: [
BlocProvider(create: (_) => QueueBloc()),
BlocProvider(create: (_) => ReadyBloc()),
], child: MainPage()),
},
debugShowCheckedModeBanner: false,
);
......
import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.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/bloc/ready_bloc.dart';
import 'package:manager_queue/models/queue.dart';
class MainPage extends StatefulWidget {
......@@ -15,28 +17,21 @@ class _MainPageState extends State<MainPage> {
// var queue = ['1', '4', '5'];
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;
});
}
List<OrderQueue> queueSelected = [];
List<OrderQueue> readySelected = [];
List<OrderQueue> pickUp = [];
// List<dynamic> orderQueueList = [];
@override
void initState() {
orderQueueList = orderQueue.where((i) => (i.status == 'In Queue')).toList();
orderReady = orderQueue.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> queueSelected) {
void setToReady(List<OrderQueue> queueSelected) {
for (var i in queueSelected) {
orderQueue.remove(i);
}
......@@ -44,7 +39,7 @@ class _MainPageState extends State<MainPage> {
orderReady.addAll(queueSelected);
}
void setToQueue(List<Queue> readySelected) {
void setToQueue(List<OrderQueue> readySelected) {
for (var i in readySelected) {
orderReady.remove(i);
}
......@@ -52,7 +47,7 @@ class _MainPageState extends State<MainPage> {
orderQueue.addAll(readySelected);
}
void setToPickUp(List<Queue> readySelected) {
void setToPickUp(List<OrderQueue> readySelected) {
for (var i in readySelected) {
orderReady.remove(i);
}
......@@ -66,6 +61,10 @@ class _MainPageState extends State<MainPage> {
@override
Widget build(BuildContext context) {
context.read<QueueBloc>().queueList();
context.read<ReadyBloc>().queueList();
print("Rebuild");
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.white,
......@@ -95,23 +94,31 @@ class _MainPageState extends State<MainPage> {
child: MediaQuery.removePadding(
context: context,
removeTop: true,
child: GridView.builder(
child: BlocBuilder<QueueBloc, List<dynamic>>(
builder: (context, list) {
List<dynamic> orderQueue = [];
orderQueue = list
.where((i) => (i.status == "In Queue"))
.toList();
return GridView.builder(
itemCount: orderQueue.length,
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 5,
childAspectRatio: 2),
itemBuilder: (context, index) {
itemBuilder: (BuildContext context, int index) {
var thisQueue = orderQueue[index];
return Material(
borderRadius: BorderRadius.circular(10),
child: InkWell(
onTap: () {
setState(() {
if (queueSelected.contains(queueItem)) {
queueSelected.remove(queueItem);
if (queueSelected.contains(thisQueue)) {
queueSelected.remove(thisQueue);
} else {
queueSelected.add(queueItem);
queueSelected.add(thisQueue);
}
print(queueSelected.toString());
......@@ -126,12 +133,12 @@ class _MainPageState extends State<MainPage> {
onTap: () {},
child: Center(
child: Text(
queueSelected.contains(queueItem)
queueSelected.contains(thisQueue)
? "Pesanan " +
queueItem.queue_number +
thisQueue.queue_number +
" ✅"
: "Pesanan " +
queueItem.queue_number,
thisQueue.queue_number,
style: TextStyle(fontSize: 20),
),
),
......@@ -140,6 +147,8 @@ class _MainPageState extends State<MainPage> {
),
);
},
);
},
),
),
),
......@@ -247,26 +256,32 @@ class _MainPageState extends State<MainPage> {
child: MediaQuery.removePadding(
context: context,
removeTop: true,
child: GridView(
child: BlocBuilder<ReadyBloc, List<dynamic>>(
builder: (context, list) {
List<dynamic> orderReady = [];
orderReady =
list.where((i) => (i.status == "Ready")).toList();
return GridView.builder(
itemCount: orderReady.length,
gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 5,
childAspectRatio: 2),
children: orderReady.map((readyItem) {
itemBuilder: (BuildContext context, int index) {
return Material(
borderRadius: BorderRadius.circular(10),
child: InkWell(
onTap: () {
setState(() {
if (readySelected.contains(readyItem)) {
readySelected.remove(readyItem);
} else {
readySelected.add(readyItem);
}
// if (readySelected.contains(readyItem)) {
// readySelected.remove(readyItem);
// } else {
// readySelected.add(readyItem);
// }
print(readySelected.toString());
// print(readySelected.toString());
});
},
child: Card(
......@@ -276,17 +291,21 @@ class _MainPageState extends State<MainPage> {
),
child: Center(
child: Text(
readySelected.contains(readyItem)
? "Pesanan " + readyItem.nomor + " ✅"
: "Pesanan " + readyItem.nomor,
readySelected.contains(orderReady)
? "Pesanan " +
orderReady[index].queue_number +
" ✅"
: "Pesanan " +
orderReady[index].queue_number,
style: TextStyle(fontSize: 20),
),
),
),
),
);
}).toList(),
),
},
);
}),
),
),
Row(
......@@ -361,7 +380,6 @@ class _MainPageState extends State<MainPage> {
],
),
),
debugShowCheckedModeBanner: false,
);
}
}
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});
{required this.id, required this.queue_number, required this.status});
factory OrderQueue.createOrderQueue(Map<String, dynamic> json) {
return OrderQueue(
......
......@@ -130,6 +130,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.0"
multi_select_flutter:
dependency: "direct main"
description:
name: multi_select_flutter
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
nested:
dependency: transitive
description:
......
......@@ -32,6 +32,7 @@ dependencies:
sdk: flutter
flutter_bloc: ^8.0.1
http: ^0.13.4
multi_select_flutter: ^4.0.0
dev_dependencies:
......
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