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
a09de7f0
Commit
a09de7f0
authored
Apr 21, 2022
by
valdi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix function
parent
9b9889c4
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
545 deletions
+21
-545
main_page.dart
lib/main_page.dart
+21
-545
No files found.
lib/main_page.dart
View file @
a09de7f0
// import 'dart:collection';
// import 'dart:collection';
import
'dart:convert'
;
// ignore_for_file: unused_local_variable, use_key_in_widget_constructors, non_constant_identifier_names, avoid_print, sized_box_for_whitespace, prefer_const_constructors, prefer_const_literals_to_create_immutables
// import 'dart:convert';
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
// import 'package:google_fonts/google_fonts.dart';
import
'package:manager_queue/element/middle_widget.dart'
;
import
'package:manager_queue/element/order_queue.dart'
;
import
'package:manager_queue/element/order_ready.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/bloc/ready_bloc.dart';
import
'package:manager_queue/helper/config.dart'
;
// import 'package:manager_queue/helper/config.dart';
import
'package:manager_queue/models/queue.dart'
;
// import 'package:manager_queue/helper/state.dart';
import
'package:http/http.dart'
as
http
;
// import 'package:manager_queue/main.dart';
import
'package:mqtt_client/mqtt_client.dart'
;
// import 'package:manager_queue/models/queue.dart';
// import 'package:http/http.dart' as http;
// import 'package:mqtt_client/mqtt_client.dart';
import
'cubit/queue_cubit.dart'
;
import
'cubit/queue_cubit.dart'
;
import
'cubit/ready_cubit.dart'
;
import
'cubit/ready_cubit.dart'
;
import
'dart:html'
;
//
import 'dart:html';
class
MainPage
extends
StatefulWidget
{
class
MainPage
extends
StatefulWidget
{
@override
@override
...
@@ -21,113 +29,8 @@ class MainPage extends StatefulWidget {
...
@@ -21,113 +29,8 @@ class MainPage extends StatefulWidget {
}
}
class
_MainPageState
extends
State
<
MainPage
>
{
class
_MainPageState
extends
State
<
MainPage
>
{
List
<
dynamic
>
orderQueue
=
[];
// List<dynamic> orderQueue = [];
List
<
dynamic
>
orderReady
=
[];
// List<dynamic> orderReady = [];
late
List
<
String
>
queueSelected
=
[];
late
List
<
String
>
readySelected
=
[];
late
List
<
String
>
pickUp
=
[];
List
clearData
=
[
OrderQueue
];
void
setToReady
(
List
queueSelecteds
)
async
{
var
apiUrl
=
apiUrlUpdate
;
for
(
var
i
in
queueSelecteds
)
{
Map
setReady
=
{
"id"
:
i
.
toString
(),
"status"
:
1
};
var
dataReady
=
jsonEncode
(
setReady
);
var
apiResult
=
await
http
.
post
(
Uri
.
parse
(
apiUrl
),
body:
dataReady
);
// 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
=
[];
}
void
setToQueue
(
List
readySelecteds
)
async
{
// print(readySelected);
var
apiUrl
=
apiUrlUpdate
;
for
(
var
i
in
readySelecteds
)
{
Map
setQueue
=
{
"id"
:
i
.
toString
(),
"status"
:
0
};
var
dataQueue
=
jsonEncode
(
setQueue
);
var
apiResult
=
await
http
.
post
(
Uri
.
parse
(
apiUrl
),
body:
dataQueue
);
var
jsonObject
=
jsonDecode
(
apiResult
.
body
)[
'status'
];
// if (jsonObject == true) {
// context.read<ReadyCubit>().getData();
// context.read<QueueCubit>().getData();
// } else {
// print("tidak berhasil");
// }
}
context
.
read
<
ReadyCubit
>().
getData
();
context
.
read
<
QueueCubit
>().
getData
();
final
pubTopic
=
queueTopic
;
final
builder
=
MqttClientPayloadBuilder
();
builder
.
addString
(
queueMessage
);
mqClient
.
publishMessage
(
pubTopic
,
MqttQos
.
exactlyOnce
,
builder
.
payload
!);
readySelected
=
[];
}
// void setToPickUp(List<OrderQueue> readySelected) {
// for (var i in readySelected) {
// orderReady.remove(i);
// }
// pickUp.addAll(readySelected);
// }
void
setToPickUp
(
List
readySelecteds
)
async
{
print
(
readySelecteds
);
var
apiUrl
=
apiUrlUpdate
;
for
(
var
i
in
readySelecteds
)
{
Map
setPickUp
=
{
"id"
:
i
.
toString
(),
"status"
:
2
};
var
dataPickUp
=
jsonEncode
(
setPickUp
);
var
apiResult
=
await
http
.
post
(
Uri
.
parse
(
apiUrl
),
body:
dataPickUp
);
var
jsonObject
=
jsonDecode
(
apiResult
.
body
)[
'status'
];
// if (jsonObject == true) {
// context.read<ReadyCubit>().getData();
// context.read<QueueCubit>().getData();
// } else {
// print("tidak berhasil");
// }
}
context
.
read
<
ReadyCubit
>().
getData
();
context
.
read
<
QueueCubit
>().
getData
();
final
pubTopic
=
queueTopic
;
final
builder
=
MqttClientPayloadBuilder
();
builder
.
addString
(
queueMessage
);
mqClient
.
publishMessage
(
pubTopic
,
MqttQos
.
exactlyOnce
,
builder
.
payload
!);
readySelected
=
[];
}
// ignore: non_constant_identifier_names
Future
setToClear
()
async
{
// print(readySelected);
var
apiUrl
=
apiUrlClear
;
// print(apiUrl);
Map
setClear
=
{
''
:
''
};
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
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
...
@@ -140,436 +43,9 @@ class _MainPageState extends State<MainPage> {
...
@@ -140,436 +43,9 @@ class _MainPageState extends State<MainPage> {
backgroundColor:
Colors
.
white
,
backgroundColor:
Colors
.
white
,
body:
Row
(
body:
Row
(
children:
<
Widget
>[
children:
<
Widget
>[
Flexible
(
OrderQueueWidget
(),
flex:
2
,
MiddleWidget
(),
child:
Container
(
OrderReadyWidget
(),
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:
TextStyle
(
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
Text
(
""
);
// 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:
Colors
.
black38
,
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
10
),
),
child:
Center
(
child:
Text
(
"Pesanan "
+
thisQueue
.
queue_number
,
style:
TextStyle
(
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
:
Colors
.
black38
,
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
10
),
),
child:
Center
(
child:
Text
(
"Pesanan "
+
thisQueue
.
queue_number
,
style:
TextStyle
(
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:
TextStyle
(
fontSize:
30
,
fontWeight:
FontWeight
.
w700
),
),
),
),
),
],
),
),
),
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
>[
// Container(
// width: 400,
// height: 100,
// margin: EdgeInsets.all(20),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.all(
// Radius.circular(20),
// ),
// color: Colors.amber,
// ),
// alignment: Alignment.center,
// child: Text(
// "REFRESH",
// style: TextStyle(
// fontSize: 30, fontWeight: FontWeight.w700),
// ),
// ),
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:
TextStyle
(
fontSize:
30
,
fontWeight:
FontWeight
.
w700
),
),
),
),
],
),
),
),
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
.
lightGreen
,
alignment:
Alignment
.
center
,
child:
Text
(
"READY"
,
style:
TextStyle
(
fontSize:
30
,
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
<
ReadyCubit
,
ReadyState
>(
listener:
(
context
,
state
)
{
print
(
'listener'
);
print
(
state
);
},
builder:
(
context
,
state
)
{
if
(
state
is
ReadyLoading
)
{
// return CircularProgressIndicator();
return
Text
(
""
);
}
else
if
(
state
is
ReadyLoaded
)
{
return
GridView
.
builder
(
itemCount:
state
.
readys
.
length
,
gridDelegate:
const
SliverGridDelegateWithFixedCrossAxisCount
(
crossAxisCount:
2
,
crossAxisSpacing:
10
,
mainAxisSpacing:
5
,
childAspectRatio:
2
),
itemBuilder:
(
BuildContext
context
,
int
index
)
{
var
thisQueue
=
state
.
readys
[
index
];
return
Material
(
borderRadius:
BorderRadius
.
circular
(
10
),
child:
InkWell
(
onTap:
()
{
context
.
read
<
ReadyCubit
>()
.
onPressed
(
state
.
readys
,
thisQueue
);
},
child:
Card
(
color:
Colors
.
black38
,
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
10
),
),
child:
Center
(
child:
Text
(
"Pesanan "
+
thisQueue
.
queue_number
,
style:
TextStyle
(
fontSize:
20
),
))),
),
);
},
);
}
else
if
(
state
is
ReadyUpdated
)
{
return
GridView
.
builder
(
itemCount:
state
.
readys
.
length
,
gridDelegate:
const
SliverGridDelegateWithFixedCrossAxisCount
(
crossAxisCount:
2
,
crossAxisSpacing:
10
,
mainAxisSpacing:
5
,
childAspectRatio:
2
),
itemBuilder:
(
BuildContext
context
,
int
index
)
{
var
thisQueue
=
state
.
readys
[
index
];
if
(
thisQueue
.
isSelectedReady
)
{
if
(!
readySelected
.
contains
(
thisQueue
.
id
))
{
readySelected
.
add
(
thisQueue
.
id
);
}
}
else
{
readySelected
.
remove
(
thisQueue
.
id
);
}
return
Material
(
borderRadius:
BorderRadius
.
circular
(
10
),
child:
InkWell
(
onTap:
()
{
context
.
read
<
ReadyCubit
>()
.
onPressed
(
state
.
readys
,
thisQueue
);
},
child:
Card
(
color:
thisQueue
.
isSelectedReady
?
Colors
.
blue
:
Colors
.
black38
,
shape:
RoundedRectangleBorder
(
borderRadius:
BorderRadius
.
circular
(
10
),
),
child:
Center
(
child:
Text
(
"Pesanan "
+
thisQueue
.
queue_number
,
style:
TextStyle
(
fontSize:
20
),
))),
),
);
},
);
}
else
{
return
SizedBox
();
}
},
),
// child: BlocBuilder<ReadyBloc, List<dynamic>>(
// builder: (context, list) {
// List<dynamic> orderReady = [];
// orderReady = list;
// return GridView.builder(
// itemCount: orderReady.length,
// gridDelegate:
// const SliverGridDelegateWithFixedCrossAxisCount(
// crossAxisCount: 2,
// crossAxisSpacing: 10,
// mainAxisSpacing: 5,
// childAspectRatio: 2),
// itemBuilder: (BuildContext context, int index) {
// var thisReady = orderReady[index];
// return Material(
// borderRadius: BorderRadius.circular(10),
// child: InkWell(
// onTap: () {
// setState(() {
// if (readySelected.contains(thisReady)) {
// readySelected.remove(thisReady);
// } else {
// readySelected.add(thisReady);
// }
// print(readySelected.toString());
// });
// },
// child: Card(
// color: Colors.black38,
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(10),
// ),
// child: Center(
// child: Text(
// readySelected.contains(thisReady)
// ? "Pesanan " + thisReady.id + " ✅"
// : "Pesanan " + thisReady.id,
// style: TextStyle(fontSize: 20),
// ),
// ),
// ),
// ),
// );
// },
// );
// }),
),
),
Row
(
children:
[
Flexible
(
flex:
1
,
child:
InkWell
(
onTap:
()
{
setToQueue
(
readySelected
);
},
child:
Container
(
width:
MediaQuery
.
of
(
context
).
size
.
width
*
0.2
,
height:
MediaQuery
.
of
(
context
).
size
.
height
*
0.1
,
color:
Colors
.
lightGreen
,
alignment:
Alignment
.
center
,
child:
InkWell
(
onTap:
()
=>
setToQueue
(
readySelected
),
child:
Text
(
"SET TO QUEUE"
,
style:
TextStyle
(
fontSize:
30
,
fontWeight:
FontWeight
.
w700
),
),
),
),
),
),
Flexible
(
flex:
1
,
child:
InkWell
(
onTap:
()
{
setToPickUp
(
readySelected
);
},
child:
Container
(
width:
MediaQuery
.
of
(
context
).
size
.
width
*
0.2
,
height:
MediaQuery
.
of
(
context
).
size
.
height
*
0.1
,
color:
Colors
.
black26
,
alignment:
Alignment
.
center
,
child:
InkWell
(
onTap:
()
=>
setToPickUp
(
readySelected
),
child:
Text
(
"PICK UP"
,
style:
TextStyle
(
fontSize:
30
,
fontWeight:
FontWeight
.
w700
),
),
),
),
),
),
],
),
],
),
),
),
],
],
),
),
),
),
...
...
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