Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Q
queue_flutter
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ernanda
queue_flutter
Commits
3ea85076
Commit
3ea85076
authored
Feb 23, 2022
by
valdi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
panggil api
parent
a9203a16
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
160 additions
and
100 deletions
+160
-100
api.dart
lib/api.dart
+3
-2
ready_bloc.dart
lib/bloc/ready_bloc.dart
+29
-0
data.dart
lib/data.dart
+2
-0
main.dart
lib/main.dart
+7
-1
main_page.dart
lib/main_page.dart
+110
-92
queue.dart
lib/models/queue.dart
+1
-5
pubspec.lock
pubspec.lock
+7
-0
pubspec.yaml
pubspec.yaml
+1
-0
No files found.
lib/api.dart
View file @
3ea85076
...
@@ -12,12 +12,13 @@ class ApiQueue {
...
@@ -12,12 +12,13 @@ class ApiQueue {
ApiQueue
(
this
.
id
,
this
.
queue_number
,
this
.
status
);
ApiQueue
(
this
.
id
,
this
.
queue_number
,
this
.
status
);
factory
ApiQueue
.
createQueue
(
Map
<
String
,
dynamic
>
json
)
{
factory
ApiQueue
.
createQueue
(
Map
<
String
,
dynamic
>
json
)
{
return
ApiQueue
(
return
ApiQueue
(
json
[
'id'
].
toString
(),
json
[
'queue_number'
].
toString
(),
json
[
'
id'
].
toString
(),
json
[
'queue_number'
].
toString
(),
json
[
'status'
]
);
json
[
'
status'
].
toString
()
);
}
}
static
Future
<
List
<
OrderQueue
>>
getQueue
()
async
{
static
Future
<
List
<
OrderQueue
>>
getQueue
()
async
{
String
apiUrl
=
"http://192.168.2.142:8000/api/getqueue"
;
String
apiUrl
=
"http://192.168.2.142:8000/api/getqueue"
;
// print("Test");
List
<
OrderQueue
>
queues
=
[];
List
<
OrderQueue
>
queues
=
[];
try
{
try
{
var
apiResult
=
await
http
.
get
(
Uri
.
parse
(
apiUrl
));
var
apiResult
=
await
http
.
get
(
Uri
.
parse
(
apiUrl
));
...
...
lib/bloc/ready_bloc.dart
0 → 100644
View file @
3ea85076
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
);
});
}
}
lib/data.dart
View file @
3ea85076
class
Queue
{
class
Queue
{
String
id
,
nomor
,
status
;
String
id
,
nomor
,
status
;
Queue
({
required
this
.
id
,
required
this
.
nomor
,
required
this
.
status
});
Queue
({
required
this
.
id
,
required
this
.
nomor
,
required
this
.
status
});
static
where
(
bool
Function
(
dynamic
i
)
param0
)
{}
}
}
List
<
Queue
>
Queues
=
[
List
<
Queue
>
Queues
=
[
...
...
lib/main.dart
View file @
3ea85076
import
'package:flutter/material.dart'
;
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'
;
import
'package:manager_queue/main_page.dart'
;
void
main
(
)
{
void
main
(
)
{
...
@@ -11,7 +14,10 @@ class MyApp extends StatelessWidget {
...
@@ -11,7 +14,10 @@ class MyApp extends StatelessWidget {
return
MaterialApp
(
return
MaterialApp
(
initialRoute:
'/'
,
initialRoute:
'/'
,
routes:
{
routes:
{
'/'
:
(
context
)
=>
MainPage
(),
'/'
:
(
context
)
=>
MultiBlocProvider
(
providers:
[
BlocProvider
(
create:
(
_
)
=>
QueueBloc
()),
BlocProvider
(
create:
(
_
)
=>
ReadyBloc
()),
],
child:
MainPage
()),
},
},
debugShowCheckedModeBanner:
false
,
debugShowCheckedModeBanner:
false
,
);
);
...
...
lib/main_page.dart
View file @
3ea85076
import
'dart:collection'
;
import
'dart:collection'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
// import 'package:manager_queue/data.dart';
// import 'package:manager_queue/data.dart';
import
'package:manager_queue/api.dart'
;
import
'package:manager_queue/api.dart'
;
import
'package:manager_queue/bloc/queue_bloc.dart'
;
import
'package:manager_queue/bloc/queue_bloc.dart'
;
import
'package:manager_queue/bloc/ready_bloc.dart'
;
import
'package:manager_queue/models/queue.dart'
;
import
'package:manager_queue/models/queue.dart'
;
class
MainPage
extends
StatefulWidget
{
class
MainPage
extends
StatefulWidget
{
...
@@ -15,28 +17,21 @@ class _MainPageState extends State<MainPage> {
...
@@ -15,28 +17,21 @@ class _MainPageState extends State<MainPage> {
// var queue = ['1', '4', '5'];
// var queue = ['1', '4', '5'];
List
<
dynamic
>
orderQueue
=
[];
List
<
dynamic
>
orderQueue
=
[];
List
<
dynamic
>
orderReady
=
[];
List
<
dynamic
>
orderReady
=
[];
List
<
Queue
>
queueSelected
=
[];
List
<
OrderQueue
>
queueSelected
=
[];
List
<
Queue
>
readySelected
=
[];
List
<
OrderQueue
>
readySelected
=
[];
List
<
Queue
>
pickUp
=
[];
List
<
OrderQueue
>
pickUp
=
[];
List
<
dynamic
>
orderQueueList
=
[];
// List<dynamic> orderQueueList = [];
void
getQueue
()
async
{
var
apiQueue
=
await
ApiQueue
.
getQueue
();
setState
(()
{
orderQueue
=
apiQueue
;
});
}
@override
@override
void
initState
()
{
void
initState
()
{
orderQueueList
=
orderQueue
.
where
((
i
)
=>
(
i
.
status
==
'In Queue'
)).
toList
();
//
orderQueueList = orderQueue.where((i) => (i.status == 'In Queue')).toList();
orderReady
=
orderQueue
.
where
((
i
)
=>
(
i
.
status
==
'Ready'
)).
toList
();
//
orderReady = orderQueue.where((i) => (i.status == 'Ready')).toList();
// TODO: implement initState
// TODO: implement initState
super
.
initState
();
super
.
initState
();
}
}
void
setToReady
(
List
<
Queue
>
queueSelected
)
{
void
setToReady
(
List
<
Order
Queue
>
queueSelected
)
{
for
(
var
i
in
queueSelected
)
{
for
(
var
i
in
queueSelected
)
{
orderQueue
.
remove
(
i
);
orderQueue
.
remove
(
i
);
}
}
...
@@ -44,7 +39,7 @@ class _MainPageState extends State<MainPage> {
...
@@ -44,7 +39,7 @@ class _MainPageState extends State<MainPage> {
orderReady
.
addAll
(
queueSelected
);
orderReady
.
addAll
(
queueSelected
);
}
}
void
setToQueue
(
List
<
Queue
>
readySelected
)
{
void
setToQueue
(
List
<
Order
Queue
>
readySelected
)
{
for
(
var
i
in
readySelected
)
{
for
(
var
i
in
readySelected
)
{
orderReady
.
remove
(
i
);
orderReady
.
remove
(
i
);
}
}
...
@@ -52,7 +47,7 @@ class _MainPageState extends State<MainPage> {
...
@@ -52,7 +47,7 @@ class _MainPageState extends State<MainPage> {
orderQueue
.
addAll
(
readySelected
);
orderQueue
.
addAll
(
readySelected
);
}
}
void
setToPickUp
(
List
<
Queue
>
readySelected
)
{
void
setToPickUp
(
List
<
Order
Queue
>
readySelected
)
{
for
(
var
i
in
readySelected
)
{
for
(
var
i
in
readySelected
)
{
orderReady
.
remove
(
i
);
orderReady
.
remove
(
i
);
}
}
...
@@ -66,6 +61,10 @@ class _MainPageState extends State<MainPage> {
...
@@ -66,6 +61,10 @@ class _MainPageState extends State<MainPage> {
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
context
.
read
<
QueueBloc
>().
queueList
();
context
.
read
<
ReadyBloc
>().
queueList
();
print
(
"Rebuild"
);
return
MaterialApp
(
return
MaterialApp
(
home:
Scaffold
(
home:
Scaffold
(
backgroundColor:
Colors
.
white
,
backgroundColor:
Colors
.
white
,
...
@@ -95,49 +94,59 @@ class _MainPageState extends State<MainPage> {
...
@@ -95,49 +94,59 @@ class _MainPageState extends State<MainPage> {
child:
MediaQuery
.
removePadding
(
child:
MediaQuery
.
removePadding
(
context:
context
,
context:
context
,
removeTop:
true
,
removeTop:
true
,
child:
GridView
.
builder
(
child:
BlocBuilder
<
QueueBloc
,
List
<
dynamic
>>(
gridDelegate:
builder:
(
context
,
list
)
{
const
SliverGridDelegateWithFixedCrossAxisCount
(
List
<
dynamic
>
orderQueue
=
[];
crossAxisCount:
2
,
orderQueue
=
list
crossAxisSpacing:
10
,
.
where
((
i
)
=>
(
i
.
status
==
"In Queue"
))
mainAxisSpacing:
5
,
.
toList
();
childAspectRatio:
2
),
return
GridView
.
builder
(
itemBuilder:
(
context
,
index
)
{
itemCount:
orderQueue
.
length
,
return
Material
(
gridDelegate:
borderRadius:
BorderRadius
.
circular
(
10
),
const
SliverGridDelegateWithFixedCrossAxisCount
(
child:
InkWell
(
crossAxisCount:
2
,
onTap:
()
{
crossAxisSpacing:
10
,
setState
(()
{
mainAxisSpacing:
5
,
if
(
queueSelected
.
contains
(
queueItem
))
{
childAspectRatio:
2
),
queueSelected
.
remove
(
queueItem
);
itemBuilder:
(
BuildContext
context
,
int
index
)
{
}
else
{
var
thisQueue
=
orderQueue
[
index
];
queueSelected
.
add
(
queueItem
);
return
Material
(
}
borderRadius:
BorderRadius
.
circular
(
10
),
child:
InkWell
(
onTap:
()
{
setState
(()
{
if
(
queueSelected
.
contains
(
thisQueue
))
{
queueSelected
.
remove
(
thisQueue
);
}
else
{
queueSelected
.
add
(
thisQueue
);
}
print
(
queueSelected
.
toString
());
print
(
queueSelected
.
toString
());
});
});
},
},
child:
Card
(
child:
Card
(
color:
Colors
.
black38
,
color:
Colors
.
black38
,
shape:
RoundedRectangleBorder
(
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
10
),
borderRadius:
BorderRadius
.
circular
(
10
),
),
),
child:
GestureDetector
(
child:
GestureDetector
(
onTap:
()
{},
onTap:
()
{},
child:
Center
(
child:
Center
(
child:
Text
(
child:
Text
(
queueSelected
.
contains
(
queueItem
)
queueSelected
.
contains
(
thisQueue
)
?
"Pesanan "
+
?
"Pesanan "
+
queueItem
.
queue_number
+
thisQueue
.
queue_number
+
" ✅"
" ✅"
:
"Pesanan "
+
:
"Pesanan "
+
queueItem
.
queue_number
,
thisQueue
.
queue_number
,
style:
TextStyle
(
fontSize:
20
),
style:
TextStyle
(
fontSize:
20
),
),
),
),
),
),
),
),
),
)
,
)
;
)
,
}
,
);
);
},
},
),
),
...
@@ -247,46 +256,56 @@ class _MainPageState extends State<MainPage> {
...
@@ -247,46 +256,56 @@ class _MainPageState extends State<MainPage> {
child:
MediaQuery
.
removePadding
(
child:
MediaQuery
.
removePadding
(
context:
context
,
context:
context
,
removeTop:
true
,
removeTop:
true
,
child:
GridView
(
child:
BlocBuilder
<
ReadyBloc
,
List
<
dynamic
>>(
gridDelegate:
builder:
(
context
,
list
)
{
const
SliverGridDelegateWithFixedCrossAxisCount
(
List
<
dynamic
>
orderReady
=
[];
crossAxisCount:
2
,
orderReady
=
crossAxisSpacing:
10
,
list
.
where
((
i
)
=>
(
i
.
status
==
"Ready"
)).
toList
();
mainAxisSpacing:
5
,
return
GridView
.
builder
(
childAspectRatio:
2
),
itemCount:
orderReady
.
length
,
children:
orderReady
.
map
((
readyItem
)
{
gridDelegate:
return
Material
(
const
SliverGridDelegateWithFixedCrossAxisCount
(
borderRadius:
BorderRadius
.
circular
(
10
),
crossAxisCount:
2
,
child:
InkWell
(
crossAxisSpacing:
10
,
onTap:
()
{
mainAxisSpacing:
5
,
setState
(()
{
childAspectRatio:
2
),
if
(
readySelected
.
contains
(
readyItem
))
{
itemBuilder:
(
BuildContext
context
,
int
index
)
{
readySelected
.
remove
(
readyItem
);
return
Material
(
}
else
{
borderRadius:
BorderRadius
.
circular
(
10
),
readySelected
.
add
(
readyItem
);
child:
InkWell
(
}
onTap:
()
{
setState
(()
{
// if (readySelected.contains(readyItem)) {
// readySelected.remove(readyItem);
// } else {
// readySelected.add(readyItem);
// }
print
(
readySelected
.
toString
());
// print(readySelected.toString());
});
});
},
},
child:
Card
(
child:
Card
(
color:
Colors
.
black38
,
color:
Colors
.
black38
,
shape:
RoundedRectangleBorder
(
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
10
),
borderRadius:
BorderRadius
.
circular
(
10
),
),
),
child:
Center
(
child:
Center
(
child:
Text
(
child:
Text
(
readySelected
.
contains
(
readyItem
)
readySelected
.
contains
(
orderReady
)
?
"Pesanan "
+
readyItem
.
nomor
+
" ✅"
?
"Pesanan "
+
:
"Pesanan "
+
readyItem
.
nomor
,
orderReady
[
index
].
queue_number
+
style:
TextStyle
(
fontSize:
20
),
" ✅"
:
"Pesanan "
+
orderReady
[
index
].
queue_number
,
style:
TextStyle
(
fontSize:
20
),
),
),
),
),
),
),
),
)
,
)
;
);
},
}).
toList
(),
);
),
}
),
),
),
),
),
Row
(
Row
(
...
@@ -361,7 +380,6 @@ class _MainPageState extends State<MainPage> {
...
@@ -361,7 +380,6 @@ class _MainPageState extends State<MainPage> {
],
],
),
),
),
),
debugShowCheckedModeBanner:
false
,
);
);
}
}
}
}
lib/models/queue.dart
View file @
3ea85076
class
OrderQueue
{
class
OrderQueue
{
final
String
id
;
final
String
id
;
// ignore: non_constant_identifier_names
final
String
queue_number
;
final
String
queue_number
;
final
String
status
;
final
String
status
;
OrderQueue
(
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
)
{
factory
OrderQueue
.
createOrderQueue
(
Map
<
String
,
dynamic
>
json
)
{
return
OrderQueue
(
return
OrderQueue
(
...
...
pubspec.lock
View file @
3ea85076
...
@@ -130,6 +130,13 @@ packages:
...
@@ -130,6 +130,13 @@ packages:
url: "https://pub.dartlang.org"
url: "https://pub.dartlang.org"
source: hosted
source: hosted
version: "1.7.0"
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:
nested:
dependency: transitive
dependency: transitive
description:
description:
...
...
pubspec.yaml
View file @
3ea85076
...
@@ -32,6 +32,7 @@ dependencies:
...
@@ -32,6 +32,7 @@ dependencies:
sdk
:
flutter
sdk
:
flutter
flutter_bloc
:
^8.0.1
flutter_bloc
:
^8.0.1
http
:
^0.13.4
http
:
^0.13.4
multi_select_flutter
:
^4.0.0
dev_dependencies
:
dev_dependencies
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment