import 'dart:math' as math; import 'package:ltx_flutter/appwrite/auth_api.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 { final database = DatabaseAPI(); AuthStatus authStatus = AuthStatus.uninitialized; DateTime? date; Document? entry; var hours = List.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(); authStatus = appwrite.status; loadEntry(); } loadEntry() async { try { final value = await database.getEntries(limit: 1, paginationQuery: ""); 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 hoursData = entry!.data['hours']; String hourData = (h >= hoursData.length) ? "" : hoursData[h].toString(); return ListTile( leading: Text(e["string"] as String), title: Text(hourData), ); }, ).toList()), ), Container( padding: EdgeInsets.only(top: 10), color: Colors.black, child: Row( children: List.generate(10, (i) => i).map( (e) { var generatedColor = math.Random().nextInt(Colors.primaries.length); return Expanded( child: Padding( padding: const EdgeInsets.all(2.0), child: FilledButton( style: ButtonStyle( shape: MaterialStateProperty.all< RoundedRectangleBorder>( RoundedRectangleBorder( borderRadius: BorderRadius.zero, side: BorderSide(color: Colors.white))), backgroundColor: MaterialStateProperty.all( Colors.primaries[generatedColor]), ), onLongPress: () => print("Long pressed ${e.toString()}"), onPressed: () => print("Tapped ${e.toString()}"), child: Text(e.toString()), ), ), ); }, ).toList(), ), ), ], ), ); } }