Skip to content

Commit

Permalink
Merge branch 'develop' into feature/json-serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
rubuy-74 committed Feb 7, 2024
2 parents 727cb1a + e638011 commit 672d7da
Show file tree
Hide file tree
Showing 18 changed files with 196 additions and 167 deletions.
7 changes: 5 additions & 2 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
version: 2

enable-beta-ecosystems: true
updates:
- package-ecosystem: "pub"
directory: "/uni"
schedule:
interval: "weekly"
interval: "daily"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-patch"]

2 changes: 1 addition & 1 deletion uni/app_version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.7.36+226
1.7.42+232
3 changes: 2 additions & 1 deletion uni/lib/generated/intl/messages_pt_PT.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class MessageLookup extends MessageLookupByLibrary {
})}";

final messages = _notInlinedMessages(_notInlinedMessages);

static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"about": MessageLookupByLibrary.simpleMessage("Sobre nós"),
"academic_services":
Expand Down Expand Up @@ -73,7 +74,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Configura aqui os teus autocarros"),
"buses_text": MessageLookupByLibrary.simpleMessage(
"Os autocarros favoritos serão apresentados no widget \'Autocarros\' dos favoritos. Os restantes serão apresentados apenas na página."),
"cancel": MessageLookupByLibrary.simpleMessage("Cancelar\n"),
"cancel": MessageLookupByLibrary.simpleMessage("Cancelar"),
"change": MessageLookupByLibrary.simpleMessage("Alterar"),
"change_prompt": MessageLookupByLibrary.simpleMessage(
"Deseja alterar a palavra-passe?"),
Expand Down
2 changes: 1 addition & 1 deletion uni/lib/l10n/intl_pt_PT.arb
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"@buses_text": {},
"bus_information": "Seleciona os autocarros dos quais queres informação:",
"@bus_information": {},
"cancel": "Cancelar\n",
"cancel": "Cancelar",
"@cancel": {},
"change": "Alterar",
"@change": {},
Expand Down
3 changes: 2 additions & 1 deletion uni/lib/model/entities/exam.dart
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,8 @@ class Exam {

@override
bool operator ==(Object other) =>
identical(this, other) || other is Exam && id == other.id;
identical(this, other) ||
other is Exam && id == other.id && subject == other.subject;

@override
int get hashCode => id.hashCode;
Expand Down
2 changes: 1 addition & 1 deletion uni/lib/view/exams/widgets/exam_row.dart
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ class _ExamRowState extends State<ExamRow> {
}

Widget? getExamRooms(BuildContext context) {
if (widget.exam.rooms[0] == '') return null;
if (widget.exam.rooms.isEmpty || widget.exam.rooms[0] == '') return null;
return Wrap(
spacing: 13,
children: roomsList(context, widget.exam.rooms),
Expand Down
1 change: 1 addition & 0 deletions uni/lib/view/home/widgets/main_cards_list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ class MainCardsListState extends State<MainCardsList> {

Widget createActionButton(BuildContext context) {
return FloatingActionButton(
backgroundColor: Theme.of(context).colorScheme.secondary,
onPressed: () => showDialog<void>(
context: context,
builder: (BuildContext context) {
Expand Down
48 changes: 48 additions & 0 deletions uni/lib/view/home/widgets/next_exams_card.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:uni/model/entities/app_locale.dart';
import 'package:uni/model/entities/exam.dart';
import 'package:uni/view/common_widgets/date_rectangle.dart';
import 'package:uni/view/common_widgets/row_container.dart';
import 'package:uni/view/exams/widgets/exam_row.dart';
import 'package:uni/view/locale_notifier.dart';

class NextExamsWidget extends StatelessWidget {
const NextExamsWidget({required this.exams, super.key});

final List<Exam> exams;

@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
DateRectangle(
date: exams.isNotEmpty ? getFormattedDate(exams.first, context) : '',
),
Column(
children: exams.map((exam) {
return Padding(
padding: const EdgeInsets.only(bottom: 8),
child: RowContainer(
child: ExamRow(
exam: exam,
teacher: '',
mainPage: true,
onChangeVisibility: () {},
),
),
);
}).toList(),
),
],
);
}

String getFormattedDate(Exam exam, BuildContext context) {
final locale = Provider.of<LocaleNotifier>(context).getLocale();
return locale == AppLocale.pt
? '${exam.weekDay(locale)}, ${exam.begin.day} de ${exam.month(locale)}'
: '${exam.weekDay(locale)}, ${exam.begin.day} ${exam.month(locale)}';
}
}
44 changes: 44 additions & 0 deletions uni/lib/view/home/widgets/remaining_exams_card.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:uni/model/entities/exam.dart';
import 'package:uni/view/common_widgets/row_container.dart';
import 'package:uni/view/exams/widgets/exam_title.dart';
import 'package:uni/view/locale_notifier.dart';

class RemainingExamsWidget extends StatelessWidget {
const RemainingExamsWidget({required this.exams, super.key});

final List<Exam> exams;

@override
Widget build(BuildContext context) {
return Column(
children: exams.map((exam) {
final locale = Provider.of<LocaleNotifier>(context).getLocale();
return Container(
margin: const EdgeInsets.only(top: 8),
child: RowContainer(
color: Theme.of(context).colorScheme.background,
child: Container(
padding: const EdgeInsets.all(11),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
'${exam.begin.day} ${exam.month(locale)}',
style: Theme.of(context).textTheme.bodyLarge,
),
ExamTitle(
subject: exam.subject,
type: exam.examType,
reverseOrder: true,
),
],
),
),
),
);
}).toList(),
);
}
}
29 changes: 7 additions & 22 deletions uni/lib/view/home/widgets/restaurant_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import 'package:uni/model/providers/lazy/restaurant_provider.dart';
import 'package:uni/model/utils/day_of_week.dart';
import 'package:uni/utils/drawer_items.dart';
import 'package:uni/view/common_widgets/generic_card.dart';
import 'package:uni/view/common_widgets/row_container.dart';
import 'package:uni/view/lazy_consumer.dart';
import 'package:uni/view/restaurant/widgets/restaurant_slot.dart';

Expand Down Expand Up @@ -140,29 +139,15 @@ class RestaurantCard extends GenericCard {
),
),
if (meals.isNotEmpty)
Card(
elevation: 0,
child: RowContainer(
borderColor: Colors.transparent,
color: const Color.fromARGB(0, 0, 0, 0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: createRestaurantRows(meals, context),
),
),
Column(
mainAxisSize: MainAxisSize.min,
children: createRestaurantRows(meals, context),
)
else
Card(
elevation: 0,
child: RowContainer(
borderColor: Colors.transparent,
color: const Color.fromARGB(0, 0, 0, 0),
child: Container(
padding: const EdgeInsets.fromLTRB(9, 0, 0, 0),
width: 400,
child: Text(S.of(context).no_menu_info),
),
),
Container(
padding: const EdgeInsets.fromLTRB(9, 0, 0, 0),
width: 400,
child: Text(S.of(context).no_menu_info),
),
const SizedBox(height: 10),
],
Expand Down
4 changes: 3 additions & 1 deletion uni/lib/view/home/widgets/tracking_banner.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ class TrackingBanner extends StatelessWidget {
return Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Theme.of(context).primaryColor,
color: Theme.of(context).brightness == Brightness.light
? Theme.of(context).primaryColor
: Theme.of(context).cardColor,
),
margin: const EdgeInsets.all(10),
child: MaterialBanner(
Expand Down
1 change: 1 addition & 0 deletions uni/lib/view/profile/profile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class ProfilePageViewState extends SecondaryPageViewState<ProfilePageView> {
const Padding(padding: EdgeInsets.all(5)),
...courseWidgets,
AccountInfoCard(),
const Padding(padding: EdgeInsets.all(5)),
PrintInfoCard(),
],
);
Expand Down
69 changes: 24 additions & 45 deletions uni/lib/view/profile/widgets/print_info_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,51 +31,30 @@ class PrintInfoCard extends GenericCard {
}

Widget getPrintInfo(BuildContext context, Profile profile) {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Table(
columnWidths: const {
1: FractionColumnWidth(0.4),
2: FractionColumnWidth(.1),
},
defaultVerticalAlignment: TableCellVerticalAlignment.middle,
children: [
TableRow(
children: [
Container(
margin: const EdgeInsets.only(
top: 20,
bottom: 20,
left: 20,
),
child: Text(
S.of(context).available_amount,
style: Theme.of(context).textTheme.titleSmall,
),
),
Container(
margin: const EdgeInsets.only(right: 15),
child: Text(
profile.printBalance,
textAlign: TextAlign.end,
style: Theme.of(context).textTheme.titleLarge,
),
),
Container(
margin: const EdgeInsets.only(right: 5),
height: 30,
child: ElevatedButton(
style: OutlinedButton.styleFrom(
padding: EdgeInsets.zero,
),
onPressed: () => addMoneyDialog(context),
child: const Center(child: Icon(Icons.add)),
),
),
],
),
],
return Row(
children: [
Container(
margin: const EdgeInsets.only(
top: 20,
bottom: 20,
left: 20,
),
child: Text(
S.of(context).available_amount,
style: Theme.of(context).textTheme.titleSmall,
),
),
const Spacer(),
Expanded(
child: Text(
profile.printBalance,
textAlign: TextAlign.end,
style: Theme.of(context).textTheme.titleLarge,
),
),
IconButton(
onPressed: () => addMoneyDialog(context),
icon: const Icon(Icons.add),
),
],
);
Expand Down
38 changes: 28 additions & 10 deletions uni/lib/view/restaurant/widgets/restaurant_page_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,32 +34,50 @@ class RestaurantPageCard extends GenericCard {
void onRefresh(BuildContext context) {}
}

class CardFavoriteButton extends StatelessWidget {
class CardFavoriteButton extends StatefulWidget {
const CardFavoriteButton(this.restaurant, {super.key});

final Restaurant restaurant;

@override
State<StatefulWidget> createState() {
return CardFavoriteButtonState();
}
}

class CardFavoriteButtonState extends State<CardFavoriteButton> {
bool isFavorite = false;

@override
void initState() {
super.initState();
isFavorite = PreferencesController.getFavoriteRestaurants()
.contains(widget.restaurant.name);
}

@override
Widget build(BuildContext context) {
final isFavorite = PreferencesController.getFavoriteRestaurants()
.contains(restaurant.name);
return IconButton(
icon: isFavorite ? Icon(MdiIcons.heart) : Icon(MdiIcons.heartOutline),
onPressed: () async {
final favoriteRestaurants =
PreferencesController.getFavoriteRestaurants();
if (favoriteRestaurants.contains(restaurant.name)) {
favoriteRestaurants.remove(restaurant.name);
if (favoriteRestaurants.contains(widget.restaurant.name)) {
favoriteRestaurants.remove(widget.restaurant.name);
} else {
favoriteRestaurants.add(restaurant.name);
favoriteRestaurants.add(widget.restaurant.name);
}
await PreferencesController.saveFavoriteRestaurants(
favoriteRestaurants,
);

setState(() {
PreferencesController.saveFavoriteRestaurants(
favoriteRestaurants,
);
isFavorite = !isFavorite;
});

final favoriteCardTypes = PreferencesController.getFavoriteCards();
if (context.mounted &&
!isFavorite &&
isFavorite &&
!favoriteCardTypes.contains(FavoriteWidgetType.restaurant)) {
showRestaurantCardHomeDialog(
context,
Expand Down
5 changes: 2 additions & 3 deletions uni/lib/view/schedule/widgets/schedule_slot.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,9 @@ class ScheduleSlot extends StatelessWidget {
style: Theme.of(context).textTheme.bodyMedium,
alignment: TextAlign.center,
);
final roomTextField = TextFieldWidget(
text: rooms,
final roomTextField = Text(
rooms,
style: Theme.of(context).textTheme.bodyMedium,
alignment: TextAlign.right,
);
return [
ScheduleTimeWidget(
Expand Down
Loading

0 comments on commit 672d7da

Please sign in to comment.