Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion assets/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -235,5 +235,6 @@
"more": "Mehr",
"visibility": "Sichtbarkeit",
"utilizationAt": "Auslastung bei {}%",
"showStudentCardPicture": "Student Card Bild zeigen"
"showStudentCardPicture": "Student Card Bild zeigen",
"theses": "Abschlussarbeiten"
}
3 changes: 2 additions & 1 deletion assets/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -235,5 +235,6 @@
"more": "More",
"visibility": "Visibility",
"utilizationAt": "Utilization at {}%",
"showStudentCardPicture": "Show Student Card Picture"
"showStudentCardPicture": "Show Student Card Picture",
"theses": "Theses"
}
17 changes: 16 additions & 1 deletion lib/base/routing/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,11 @@ import 'package:campus_flutter/searchComponent/viewModels/search_viewmodel.dart'
import 'package:campus_flutter/searchComponent/views/search_scaffold.dart';
import 'package:campus_flutter/settingsComponent/views/settings_scaffold.dart';
import 'package:campus_flutter/studiesComponent/model/lecture.dart';
import 'package:campus_flutter/studiesComponent/screen/grades_screen.dart';
import 'package:campus_flutter/studiesComponent/screen/lectures_screen.dart';
import 'package:campus_flutter/studiesComponent/screen/studies_screen.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/lecture_details_view.dart';
import 'package:campus_flutter/studiesComponent/screen/theses_screen.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/lecture_details_view.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';

Expand Down Expand Up @@ -146,6 +149,18 @@ final _router = GoRouter(
),
],
),
GoRoute(
path: grades,
builder: (context, state) => const GradesScreen(),
),
GoRoute(
path: lectures,
builder: (context, state) => const LecturesScreen(),
),
GoRoute(
path: theses,
builder: (context, state) => const ThesesScreen(),
),
GoRoute(
path: lectureDetails,
builder:
Expand Down
3 changes: 3 additions & 0 deletions lib/base/routing/routes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ const fullScreenImage = "/fullScreenImage";

/// Studies tab
const studies = "/studies";
const grades = "/grades";
const lectures = "/lectures";
const lectureDetails = "/lectureDetails";
const theses = "/theses";

/// Calendar tab
const calendar = "/calendar";
Expand Down
19 changes: 19 additions & 0 deletions lib/studiesComponent/screen/grades_screen.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:campus_flutter/base/util/custom_back_button.dart';
import 'package:campus_flutter/studiesComponent/view/grade/grades_view.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

class GradesScreen extends StatelessWidget {
const GradesScreen({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: CustomBackButton(),
title: Text(context.tr("grades")),
),
body: GradesView(),
);
}
}
19 changes: 19 additions & 0 deletions lib/studiesComponent/screen/lectures_screen.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:campus_flutter/base/util/custom_back_button.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectures_view.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

class LecturesScreen extends StatelessWidget {
const LecturesScreen({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: CustomBackButton(),
title: Text(context.tr("lectures")),
),
body: LecturesView(),
);
}
}
85 changes: 35 additions & 50 deletions lib/studiesComponent/screen/studies_screen.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import 'package:campus_flutter/base/extensions/context.dart';
import 'package:campus_flutter/studiesComponent/view/grade/grades_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectures_view.dart';
import 'package:campus_flutter/base/routing/routes.dart';
import 'package:campus_flutter/studiesComponent/view/grade/widget/grades_widget_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/widget/lectures_widget_view.dart';
import 'package:campus_flutter/studiesComponent/view/studies_card_view.dart';
import 'package:campus_flutter/studiesComponent/view/theses/widget/theses_widget_view.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

class StudiesScreen extends StatefulWidget {
const StudiesScreen({super.key});
Expand All @@ -12,57 +15,39 @@ class StudiesScreen extends StatefulWidget {
}

class _StudiesScreenState extends State<StudiesScreen> {
int selectedPage = 0;
PageController pageController = PageController();

final List<Widget> pages = const [GradesView(), LecturesView()];

@override
void dispose() {
pageController.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Column(
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: context.padding),
child: SizedBox(
width: double.infinity,
child: SegmentedButton(
showSelectedIcon: false,
segments: [
ButtonSegment(value: 0, label: Text(context.tr("grades"))),
ButtonSegment(value: 1, label: Text(context.tr("lectures"))),
],
selected: {selectedPage},
onSelectionChanged: (selection) {
setState(() {
selectedPage = selection.first;
});
pageController.animateToPage(
selectedPage,
duration: const Duration(milliseconds: 300),
curve: Curves.easeInOut,
);
return LayoutBuilder(
builder: (context, constraints) {
return Column(
children: [
StudiesCardView(
title: context.tr("grades"),
body: GradesWidgetView(),
height: constraints.maxHeight / 3,
onTap: () {
context.push(grades);
},
),
StudiesCardView(
title: context.tr("lectures"),
body: LecturesWidgetView(),
height: constraints.maxHeight / 3,
onTap: () {
context.push(lectures);
},
),
StudiesCardView(
title: context.tr("theses"),
body: ThesesWidgetView(),
height: constraints.maxHeight / 3,
onTap: () {
context.push(theses);
},
),
),
),
Expanded(
child: PageView(
controller: pageController,
onPageChanged: (page) {
setState(() {
selectedPage = page;
});
},
children: pages,
),
),
],
],
);
},
);
}
}
18 changes: 18 additions & 0 deletions lib/studiesComponent/screen/theses_screen.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import 'package:campus_flutter/base/util/custom_back_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

class ThesesScreen extends StatelessWidget {
const ThesesScreen({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: CustomBackButton(),
title: Text(context.tr("theses")),
),
body: Text("Theses"),
);
}
}
29 changes: 29 additions & 0 deletions lib/studiesComponent/view/grade/widget/grades_widget_view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'package:campus_flutter/studiesComponent/viewModel/grade_viewmodel.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

class GradesWidgetView extends ConsumerStatefulWidget {
const GradesWidgetView({super.key});

@override
ConsumerState<ConsumerStatefulWidget> createState() =>
_GradesWidgetViewState();
}

class _GradesWidgetViewState extends ConsumerState<GradesWidgetView> {
@override
void initState() {
ref.read(gradeViewModel).fetch(false);
super.initState();
}

@override
Widget build(BuildContext context) {
return Center(
child: Text(
context.tr("grades"),
),
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import 'package:campus_flutter/base/routing/routes.dart';
import 'package:campus_flutter/base/util/speaker.dart';
import 'package:campus_flutter/studiesComponent/model/lecture.dart';
import 'package:campus_flutter/studiesComponent/model/lecture_details.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/basic_lecture_info_row_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/basic_lecture_info_row_view.dart';
import 'package:campus_flutter/base/extensions/context.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/lecture_info_card_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/lecture_info_card_view.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:campus_flutter/studiesComponent/model/lecture_details.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/detailed_lecture_info_row_view.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/lecture_info_card_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/detailed_lecture_info_row_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/lecture_info_card_view.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import 'package:campus_flutter/base/util/color_picker_view.dart';
import 'package:campus_flutter/calendarComponent/views/visibility_button_view.dart';
import 'package:campus_flutter/studiesComponent/model/lecture.dart';
import 'package:campus_flutter/studiesComponent/model/lecture_details.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/basic_lecture_info_view.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/detailed_lecture_info_view.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/lecture_links_view.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/lecture_meeting_info_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/basic_lecture_info_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/detailed_lecture_info_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/lecture_links_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/lecture_meeting_info_view.dart';
import 'package:campus_flutter/studiesComponent/viewModel/lecture_details_viewmodel.dart';
import 'package:campus_flutter/base/extensions/context.dart';
import 'package:easy_localization/easy_localization.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:campus_flutter/base/util/hyperlink_text.dart';
import 'package:campus_flutter/studiesComponent/model/lecture_details.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/lecture_info_card_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/lecture_info_card_view.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:campus_flutter/base/routing/routes.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/lecture_info_card_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/lecture_info_card_view.dart';
import 'package:campus_flutter/studiesComponent/viewModel/lecture_details_viewmodel.dart';
import 'package:campus_flutter/studiesComponent/view/lectureDetail/basic_lecture_info_row_view.dart';
import 'package:campus_flutter/studiesComponent/view/lecture/lectureDetail/basic_lecture_info_row_view.dart';
import 'package:campus_flutter/base/extensions/context.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
Expand Down
29 changes: 29 additions & 0 deletions lib/studiesComponent/view/lecture/widget/lectures_widget_view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'package:campus_flutter/studiesComponent/viewModel/lecture_viewmodel.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

class LecturesWidgetView extends ConsumerStatefulWidget {
const LecturesWidgetView({super.key});

@override
ConsumerState<ConsumerStatefulWidget> createState() =>
_LecturesWidgetViewState();
}

class _LecturesWidgetViewState extends ConsumerState<LecturesWidgetView> {
@override
void initState() {
ref.read(lectureViewModel).fetch(false);
super.initState();
}

@override
Widget build(BuildContext context) {
return Center(
child: Text(
context.tr("lectures"),
),
);
}
}
36 changes: 36 additions & 0 deletions lib/studiesComponent/view/studies_card_view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import 'package:campus_flutter/homeComponent/view/widget/widget_frame_view.dart';
import 'package:flutter/material.dart';

class StudiesCardView extends StatelessWidget {
const StudiesCardView({
super.key,
required this.title,
required this.body,
required this.height,
required this.onTap,
});

final String title;
final Widget body;
final double height;
final void Function() onTap;

@override
Widget build(BuildContext context) {
return SizedBox(
height: height,
width: double.maxFinite,
child: WidgetFrameView(
title: title,
child: Expanded(
child: InkWell(
onTap: onTap,
child: Card(
child: body,
),
),
),
),
);
}
}
28 changes: 28 additions & 0 deletions lib/studiesComponent/view/theses/widget/theses_widget_view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

class ThesesWidgetView extends ConsumerStatefulWidget {
const ThesesWidgetView({super.key});

@override
ConsumerState<ConsumerStatefulWidget> createState() =>
_ThesesWidgetViewState();
}

class _ThesesWidgetViewState extends ConsumerState<ThesesWidgetView> {
@override
void initState() {
// TODO: fetch available theses offers
super.initState();
}

@override
Widget build(BuildContext context) {
return Center(
child: Text(
context.tr("theses"),
),
);
}
}
Loading