down with daos, mild refactoring, moving to pulling from real data

This commit is contained in:
Joshua Burman
2024-12-15 22:21:23 -05:00
parent 54d47245ae
commit 67d7a374d4
22 changed files with 731 additions and 528 deletions

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:sendtrain/classes/activity_action.dart';
import 'package:sendtrain/database/database.dart' hide ActivityAction;
import 'package:sendtrain/models/activity_model.dart';
import '../widgets/activities_header.dart';
@ -13,6 +14,7 @@ class ActivitiesScreen extends StatefulWidget {
}
class _ActivitiesScreenState extends State<ActivitiesScreen> {
final Activity? activity = null;
final data = ActivityModel(
id: 1,
@ -40,23 +42,24 @@ class _ActivitiesScreenState extends State<ActivitiesScreen> {
@override
Widget build(BuildContext context) {
List<Widget> activities = List.generate(10, (i) => ActivityCard(activity: data));
return Text("N/A");
// List<Widget> activities = List.generate(10, (i) => ActivityCard(activity: data, data: activity));
return Padding(
padding: const EdgeInsets.fromLTRB(10, 15, 10, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
const ActivitiesHeader(),
Expanded(
child: GridView.count(
primary: false,
padding: const EdgeInsets.fromLTRB(0, 0, 0, 0),
crossAxisSpacing: 10,
mainAxisSpacing: 10,
crossAxisCount: 2,
children: activities,
))
]));
// return Padding(
// padding: const EdgeInsets.fromLTRB(10, 15, 10, 0),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// const ActivitiesHeader(),
// Expanded(
// child: GridView.count(
// primary: false,
// padding: const EdgeInsets.fromLTRB(0, 0, 0, 0),
// crossAxisSpacing: 10,
// mainAxisSpacing: 10,
// crossAxisCount: 2,
// children: activities,
// ))
// ]));
}
}

View File

@ -1,31 +1,31 @@
import 'package:drift/drift.dart' hide Column;
import 'package:flutter/material.dart';
import 'package:sendtrain/database.dart';
import 'package:sendtrain/database/daos/sessions_dao.dart';
import 'package:sendtrain/database/database.dart';
import '../widgets/session_card.dart';
class SessionsScreen extends StatelessWidget {
final AppDatabase database = AppDatabase();
SessionsScreen({super.key});
Future<List<Session>> getSessions() async {
// database.managers.sessions.filter((session) => session.status(SessionStatus.pending));
return await database.managers.sessions.get();
}
@override
Widget build(BuildContext context) {
return FutureBuilder<List<Session>>(
future: getSessions(),
future: SessionsDao(database).all(),
builder: (context, snapshot) {
if (snapshot.hasData) {
database.close();
final sessions = snapshot.data!;
final pending = sessions.where((session) => session.status == SessionStatus.completed || session.status == SessionStatus.missed);
final upcoming = sessions.firstWhere((session) => session.status == SessionStatus.pending);
final current = sessions.firstWhere((session) => session.status == SessionStatus.started);
final pending = sessions.where((session) =>
session.status == SessionStatus.completed ||
session.status == SessionStatus.missed);
final upcoming = sessions.firstWhere(
(session) => session.status == SessionStatus.pending);
final current = sessions.firstWhere(
(session) => session.status == SessionStatus.started);
List<Widget> previousSessions = List.generate(pending.length, (i) => SessionCard(type: 1, session: pending.elementAt(i)));
Widget upcomingSession =
SessionCard(session: upcoming);
List<Widget> previousSessions = List.generate(pending.length,
(i) => SessionCard(type: 1, session: pending.elementAt(i)));
Widget upcomingSession = SessionCard(session: upcoming);
Widget currentSession = SessionCard(session: current);
database.close();
@ -36,19 +36,22 @@ class SessionsScreen extends StatelessWidget {
const Padding(
padding: EdgeInsets.fromLTRB(15, 5, 0, 0),
child: Text(
style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
style: TextStyle(
fontSize: 25, fontWeight: FontWeight.bold),
'Current:')),
currentSession,
const Padding(
padding: EdgeInsets.fromLTRB(15, 30, 0, 0),
child: Text(
style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
style: TextStyle(
fontSize: 25, fontWeight: FontWeight.bold),
'Upcoming:')),
upcomingSession,
const Padding(
padding: EdgeInsets.fromLTRB(15, 30, 0, 0),
child: Text(
style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
style: TextStyle(
fontSize: 25, fontWeight: FontWeight.bold),
'Previous:')),
SizedBox(
width: double.infinity,
@ -66,48 +69,5 @@ class SessionsScreen extends StatelessWidget {
return const CircularProgressIndicator();
}
});
// List<Widget> previousSessions = List.generate(
// 10, (i) => SessionCard(state: 1, type: 1, session: _sessions.first));
// Widget upcomingSession = SessionCard(state: 2, session: _sessions.first);
// Widget currentSession = SessionCard(session: _sessions.first);
// return Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// const Padding(
// padding: EdgeInsets.fromLTRB(15, 5, 0, 0),
// child: Text(
// style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
// 'Current:')),
// currentSession,
// const Padding(
// padding: EdgeInsets.fromLTRB(15, 30, 0, 0),
// child: Text(
// style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
// 'Upcoming:')),
// upcomingSession,
// const Padding(
// padding: EdgeInsets.fromLTRB(15, 30, 0, 0),
// child: Text(
// style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold),
// 'Previous:')),
// SizedBox(
// width: double.infinity,
// height: 160,
// child: GridView.count(
// padding: const EdgeInsets.fromLTRB(15, 10, 0, 0),
// scrollDirection: Axis.horizontal,
// crossAxisSpacing: 5,
// mainAxisSpacing: 5,
// crossAxisCount: 1,
// children: previousSessions))
// // Flexible(
// // child: ListView(
// // scrollDirection: Axis.vertical,
// // children: previousSessions,
// // )),
// ],
// );
}
}