94 lines
3.1 KiB
Dart
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()),),)
|
|
]),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|