Skip to content

Commit

Permalink
Extract corresponding course unit to schedule slot
Browse files Browse the repository at this point in the history
  • Loading branch information
adriannalmeida committed Feb 29, 2024
1 parent da71447 commit 8c9a9c3
Showing 1 changed file with 17 additions and 24 deletions.
41 changes: 17 additions & 24 deletions uni/lib/view/schedule/widgets/schedule_slot.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
Expand Down Expand Up @@ -72,6 +73,8 @@ class ScheduleSlot extends StatelessWidget {
rooms,
style: Theme.of(context).textTheme.bodyMedium,
);
final courseUnit = _correspondingCourseUnit(context);

return [
ScheduleTimeWidget(
begin: DateFormat('HH:mm').format(begin),
Expand All @@ -84,9 +87,10 @@ class ScheduleSlot extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SubjectButtonWidget(
occurrId: occurrId,
),
if (courseUnit != null)
SubjectButtonWidget(
courseUnit: courseUnit,
),
subjectTextField,
typeClassTextField,
],
Expand All @@ -104,42 +108,31 @@ class ScheduleSlot extends StatelessWidget {
roomTextField,
];
}
}

class SubjectButtonWidget extends StatelessWidget {
const SubjectButtonWidget({required this.occurrId, super.key});

final int occurrId;
CourseUnit correspondingCourseUnit(BuildContext context) {
final courseUnits =
Provider.of<ProfileProvider>(context, listen: false).state!.courseUnits;
final notFound =
CourseUnit(abbreviation: 'NF', name: 'not found', occurrId: 0);
final correspondingCourseUnit = courseUnits.firstWhere(
CourseUnit? _correspondingCourseUnit(BuildContext context) {
final courseUnits = context.read<ProfileProvider>().state!.courseUnits;
return courseUnits.firstWhereOrNull(
(courseUnit) => courseUnit.occurrId == occurrId,
orElse: () => notFound,
);

return correspondingCourseUnit;
}
}

class SubjectButtonWidget extends StatelessWidget {
const SubjectButtonWidget({required this.courseUnit, super.key});

final CourseUnit courseUnit;

void _launchUcPage(BuildContext context) {
final correspondCourseUnit = correspondingCourseUnit(context);
Navigator.push(
context,
MaterialPageRoute<CourseUnitDetailPageView>(
builder: (context) => CourseUnitDetailPageView(correspondCourseUnit),
builder: (context) => CourseUnitDetailPageView(courseUnit),
),
);
}

@override
Widget build(BuildContext context) {
if (correspondingCourseUnit(context).name == 'not found') {
return const Column(
mainAxisSize: MainAxisSize.min,
);
}
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Expand Down

0 comments on commit 8c9a9c3

Please sign in to comment.