kinda done

This commit is contained in:
sewmina7@gmail.com 2023-08-09 22:49:13 +05:30
parent 093e305fa4
commit 6f26885c20
3 changed files with 191 additions and 44 deletions

View File

@ -36,6 +36,18 @@ class _DataManager{
}catch(e){
Debug.LogError(e);
}
List<dynamic> _services= [];
for (var s in services) {
Map<String,dynamic> se = jsonDecode(s);
if(DateTime.now().isAfter(DateTime.parse(se['end_time']))){
continue;
}
_services.add(s);
}
services = _services;
}
Future<void> AddService(String name, DateTime sTime, DateTime eTime,Duration duration) async {

86
lib/scanning_page.dart Normal file
View File

@ -0,0 +1,86 @@
import 'package:flutter/material.dart';
import 'package:queue_mgr/backend/DataManager.dart';
class ScanningPage extends StatefulWidget {
ScanningPage({super.key,required this.id});
String id;
@override
State<ScanningPage> createState() => _ScanningPageState();
}
class _ScanningPageState extends State<ScanningPage> {
int tokenID = 0;
@override
Widget build(BuildContext context) {
Map<String, dynamic> service = DataManager.instance().GetServiceById(widget.id.toString());
return Scaffold(
appBar: AppBar(title: Text("${service['name']} - Scan Mode"),),
body: Padding(
padding: const EdgeInsets.all(18.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.token),
Text(" Token ID"),
],
),
Text(tokenID.toString(),style: TextStyle(fontSize: 65),),
LimitedBox(
maxWidth: 300,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 30.0),
child: GridView.count(crossAxisCount: 3,shrinkWrap: true,children: List.generate(9, (index){
return Padding(
padding: const EdgeInsets.all(8.0),
child: ElevatedButton(onPressed: (){OnButton(index+1);}, child: Text((index+1).toString(),style: TextStyle(fontSize: 20),)),
);
}),),
),
),
Container(
height:95,
width: 135,
padding: const EdgeInsets.symmetric(horizontal: 30.0,vertical: 10),
child: ElevatedButton(onPressed: (){OnButton(0);}, child: Text("0",style: TextStyle(fontSize: 20))),
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
ElevatedButton(onPressed: (){
tokenID=0;
setState(() {
});
}, child: Padding(
padding: const EdgeInsets.all(18.0),
child: Text("Clear",style: TextStyle(fontSize: 15)),
),),
ElevatedButton(onPressed: (){}, child: Padding(
padding: const EdgeInsets.all(18.0),
child: Text("Complete",style: TextStyle(fontSize: 15)),
))
],
)
],
),
),
);
}
void OnButton(int num){
tokenID = int.parse(tokenID.toString() + num.toString());
setState(() {
});
}
}

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:queue_mgr/backend/DataManager.dart';
import 'package:queue_mgr/scanning_page.dart';
class ServicePage extends StatefulWidget {
ServicePage({super.key,required this.serviceId});
@ -12,62 +13,110 @@ class _ServicePageState extends State<ServicePage> {
@override
Widget build(BuildContext context) {
Map<String, dynamic> service = DataManager.instance().GetServiceById(widget.serviceId.toString());
List<String> members = service['members'].toString().split(',');
members.removeAt(0);
return Scaffold(
appBar: AppBar(title: Text(service['name']),),
body: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
children: [
GridView.count(shrinkWrap: true,crossAxisCount: 2,children: [
Card(child:
Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.play_arrow),Text(" Starting Time")],),
body: SafeArea(
child: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
children: [
GridView.count(shrinkWrap: true,crossAxisCount: 2,children: [
Card(child:
Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(dateFormat.format(DateTime.parse(service['start_time']))),
Text(timeFormat.format(DateTime.parse(service['start_time'])),style: TextStyle(fontSize: 20)),
Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.play_arrow),Text(" Starting Time")],),
Column(
children: [
Text(dateFormat.format(DateTime.parse(service['start_time']))),
Text(timeFormat.format(DateTime.parse(service['start_time'])),style: TextStyle(fontSize: 20)),
],
),
Container(height: 20,)
],
),),
Card(child:
Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.stop),Text(" Ending Time")],),
Column(
children: [
Text(dateFormat.format(DateTime.parse(service['end_time']))),
Text(timeFormat.format(DateTime.parse(service['end_time'])),style: TextStyle(fontSize: 20)),
],
),
Container(height: 20,)
],
),),
],),
Card(
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.people_alt_rounded),
Text(" Queue Length"),
],
),
Text(members.length.toString(),style: TextStyle(fontSize: 25),)
],
),
Container(height: 20,)
],
),),
Card(child:
Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(mainAxisAlignment: MainAxisAlignment.center,children: [Icon(Icons.stop),Text(" Ending Time")],),
Column(
),
),
SizedBox(
height: 50,
),
ElevatedButton(onPressed: (){
Navigator.of(context).push(MaterialPageRoute(builder: (context)=> ScanningPage(id: widget.serviceId)));
}, child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: [
Text(dateFormat.format(DateTime.parse(service['end_time']))),
Text(timeFormat.format(DateTime.parse(service['end_time'])),style: TextStyle(fontSize: 20)),
Icon(Icons.qr_code_scanner),
SizedBox(height: 10,),
Text("Scan Mode"),
],
),
Container(height: 20,)
],
),),
],),
Card(
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
)),
SizedBox(height: 50,),
(members.length >0) ? Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Icon(Icons.people_alt_rounded),
Text(" Queue Length"),
Row(mainAxisAlignment: MainAxisAlignment.center,children: [
Icon(Icons.emoji_people),
Text(" Queue")
],),
SizedBox(height: 20,),
GridView.count(
crossAxisCount: 5,
mainAxisSpacing: 10,
crossAxisSpacing: 10,
shrinkWrap: true,
children: List.generate(members.length, (index){
if(members[index].length <=0){return Container();}
return Container(decoration: BoxDecoration(borderRadius: BorderRadius.circular(20),color: Colors.black.withOpacity(0.2)),child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(child: Text(members[index],style: TextStyle(fontSize: 18),)),
));
}),
),
],
),
Text(service['members'].toString().split(',').length.toString(),style: TextStyle(fontSize: 25),)
],
),
),
)
],
),
) : Container()
],
),
),
),
),
);