ltx-flutter/ltx_flutter/lib/pages/today_page.dart
2023-05-23 17:59:16 -07:00

100 lines
2.6 KiB
Dart

import 'package:ltx_flutter/appwrite/appwrite.dart';
import 'package:ltx_flutter/appwrite/database_api.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:appwrite/models.dart';
import 'package:intl/intl.dart';
class TodayPage extends StatefulWidget {
const TodayPage({Key? key}) : super(key: key);
@override
_TodayPageState createState() => _TodayPageState();
}
class _TodayPageState extends State<TodayPage> {
final database = DatabaseAPI();
AuthStatus authStatus = AuthStatus.uninitialized;
DateTime? date;
Document? entry;
var hours = List<int>.generate(24, (i) => i).map((e) {
var meridien = "AM";
var hour = 12;
if (e > 12) {
hour = e - 12;
} else if (e > 0) {
hour = e;
}
if (e > 11) {
meridien = "PM";
}
return {
"string": "${hour.toString()} $meridien",
"index": e.toInt(),
};
}).toList();
@override
void initState() {
super.initState();
final AuthAPI appwrite = context.read<AuthAPI>();
authStatus = appwrite.status;
loadEntry();
}
loadEntry() async {
try {
final value = await database.getEntries(limit: 1, dateISO: "");
setState(() {
entry = value.documents[0];
});
} catch (e) {
print(e);
}
}
String formatDate({String format = "", String? dateISO}) {
final DateFormat dateFormatter = DateFormat(format);
final date = dateISO!.isEmpty ? DateTime.now() : DateTime.parse(dateISO);
return dateFormatter.format(date);
}
@override
Widget build(BuildContext context) {
return Center(
child: entry == null
? CircularProgressIndicator()
: Column(
children: [
Text(
style: TextStyle(
fontSize: 40,
),
formatDate(
format: "E, MMM dd, yyyy",
dateISO: entry?.data['date'],
),
),
Expanded(
child: ListView(
children: hours.map(
(e) {
int h = e["index"] as int;
List<dynamic> hoursData = entry!.data['hours'];
String hourData = (h >= hoursData.length)
? ""
: hoursData[h].toString();
return ListTile(
leading: Text(e["string"] as String),
title: Text(hourData),
);
},
).toList()),
),
],
),
);
}
}