QueueClient/lib/home.dart
2023-08-08 08:28:56 +05:30

94 lines
3.1 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:queue_client/backend/DataManager.dart';
import 'package:queue_client/service_info.dart';
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
void initState() {
// TODO: implement initState
super.initState();
refresh();
}
void refresh()async{
await DataManager.instance().GetData();
setState(() {
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Queue Helper"),
),
body: Container(
padding: EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Joined"),
ListView.builder(
shrinkWrap: true,
itemCount: DataManager.instance().JoinedServices.length,
itemBuilder: (context, index){
// Map<String,dynamic> service= jsonDecode(DataManager.instance().services[index]);
Map<String,dynamic> service= DataManager.instance().JoinedServices[index];
return ServiceCard(tokenId:service['tokenId'],id: int.parse(service['id']),sTime: DateTime.parse(service['start_time'] ?? DateTime.now().toString()), name: service['name']!, memberCount: service['members']!.split(',').length-1);
}),
SizedBox(height:50),
Text("Available"),
ListView.builder(
shrinkWrap: true,
itemCount: DataManager.instance().AvailableServices.length,
itemBuilder: (context, index){
// Map<String,dynamic> service= jsonDecode(DataManager.instance().services[index]);
Map<String,dynamic> service= DataManager.instance().AvailableServices[index];
return ServiceCard(tokenId: -1,id: int.parse(service['id']),sTime: DateTime.parse(service['start_time'] ?? DateTime.now().toString()), name: service['name']!, memberCount: service['members']!.split(',').length-1);
}),
],
),
),
);
}
Widget ServiceCard(
{required int id, required DateTime sTime,
required String name,
required int memberCount, required int tokenId}) {
return InkWell(
onTap: () async{
await Navigator.of(context).push(MaterialPageRoute(builder: (context)=> ServiceInfoPage(id: id,tokenId: tokenId,)));
setState(() {
});
},
child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("${sTime.year}-${sTime.month}-${sTime.day}"),
Text(name),
Container(width: 25,height: 25,decoration: BoxDecoration(borderRadius: BorderRadius.circular(50),color: Colors.deepPurple),child: Center(child: Text(memberCount.toString()),),)
]),
),
),
);
}
}