diff --git a/packages/uni_app/assets/fonts/Poppins/OFL.txt b/packages/uni_app/assets/fonts/Poppins/OFL.txt new file mode 100644 index 000000000..3e92931fa --- /dev/null +++ b/packages/uni_app/assets/fonts/Poppins/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-Black.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-Black.ttf new file mode 100644 index 000000000..71c0f995e Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-Black.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-BlackItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-BlackItalic.ttf new file mode 100644 index 000000000..7aeb58bd1 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-BlackItalic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-Bold.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-Bold.ttf new file mode 100644 index 000000000..00559eeb2 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-Bold.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-BoldItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-BoldItalic.ttf new file mode 100644 index 000000000..e61e8e88b Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-BoldItalic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraBold.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraBold.ttf new file mode 100644 index 000000000..df7093608 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraBold.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraBoldItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraBoldItalic.ttf new file mode 100644 index 000000000..14d2b375d Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraBoldItalic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraLight.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraLight.ttf new file mode 100644 index 000000000..e76ec69a6 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraLight.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraLightItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraLightItalic.ttf new file mode 100644 index 000000000..89513d946 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-ExtraLightItalic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-Italic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-Italic.ttf new file mode 100644 index 000000000..12b7b3c40 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-Italic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-Light.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-Light.ttf new file mode 100644 index 000000000..bc36bcc24 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-Light.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-LightItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-LightItalic.ttf new file mode 100644 index 000000000..9e70be6a9 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-LightItalic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-Medium.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-Medium.ttf new file mode 100644 index 000000000..6bcdcc27f Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-Medium.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-MediumItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-MediumItalic.ttf new file mode 100644 index 000000000..be67410fd Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-MediumItalic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-Regular.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-Regular.ttf new file mode 100644 index 000000000..9f0c71b70 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-Regular.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-SemiBold.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-SemiBold.ttf new file mode 100644 index 000000000..74c726e32 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-SemiBold.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-SemiBoldItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-SemiBoldItalic.ttf new file mode 100644 index 000000000..3e6c94223 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-SemiBoldItalic.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-Thin.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-Thin.ttf new file mode 100644 index 000000000..03e736613 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-Thin.ttf differ diff --git a/packages/uni_app/assets/fonts/Poppins/Poppins-ThinItalic.ttf b/packages/uni_app/assets/fonts/Poppins/Poppins-ThinItalic.ttf new file mode 100644 index 000000000..e26db5dd3 Binary files /dev/null and b/packages/uni_app/assets/fonts/Poppins/Poppins-ThinItalic.ttf differ diff --git a/packages/uni_app/assets/images/exams_intro.png b/packages/uni_app/assets/images/exams_intro.png new file mode 100644 index 000000000..dfe25c2f7 Binary files /dev/null and b/packages/uni_app/assets/images/exams_intro.png differ diff --git a/packages/uni_app/assets/images/faculty_intro.png b/packages/uni_app/assets/images/faculty_intro.png new file mode 100644 index 000000000..c42790c19 Binary files /dev/null and b/packages/uni_app/assets/images/faculty_intro.png differ diff --git a/packages/uni_app/assets/images/intro1.png b/packages/uni_app/assets/images/intro1.png new file mode 100644 index 000000000..fac584aa7 Binary files /dev/null and b/packages/uni_app/assets/images/intro1.png differ diff --git a/packages/uni_app/assets/images/intro2.png b/packages/uni_app/assets/images/intro2.png new file mode 100644 index 000000000..da931d980 Binary files /dev/null and b/packages/uni_app/assets/images/intro2.png differ diff --git a/packages/uni_app/assets/images/map_intro.png b/packages/uni_app/assets/images/map_intro.png new file mode 100644 index 000000000..d001817a2 Binary files /dev/null and b/packages/uni_app/assets/images/map_intro.png differ diff --git a/packages/uni_app/assets/images/restaurants_intro.png b/packages/uni_app/assets/images/restaurants_intro.png new file mode 100644 index 000000000..cf6cbe1bf Binary files /dev/null and b/packages/uni_app/assets/images/restaurants_intro.png differ diff --git a/packages/uni_app/assets/images/schedule_intro.png b/packages/uni_app/assets/images/schedule_intro.png new file mode 100644 index 000000000..530fb719a Binary files /dev/null and b/packages/uni_app/assets/images/schedule_intro.png differ diff --git a/packages/uni_app/lib/controller/background_workers/notifications.dart b/packages/uni_app/lib/controller/background_workers/notifications.dart index b994b931d..cca685336 100644 --- a/packages/uni_app/lib/controller/background_workers/notifications.dart +++ b/packages/uni_app/lib/controller/background_workers/notifications.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:logger/logger.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:uni/controller/background_workers/notifications/tuition_notification.dart'; import 'package:uni/controller/local_storage/notification_timeout_storage.dart'; @@ -75,6 +76,52 @@ class NotificationManager { await _buildNotificationWorker(); } + Future hasNotificationPermission() async { + if (Platform.isAndroid) { + try { + final status = await Permission.notification.status; + if (status.isGranted) { + return true; + } + + if (status.isDenied || + status.isPermanentlyDenied || + status.isRestricted) { + return false; + } + + final androidPlugin = + _localNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin + >(); + final bool? enabled = await androidPlugin?.areNotificationsEnabled(); + return enabled ?? true; + } catch (_) { + final androidPlugin = + _localNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin + >(); + try { + final bool? enabled = await androidPlugin?.areNotificationsEnabled(); + return enabled ?? true; + } catch (_) { + return true; + } + } + } else if (Platform.isIOS) { + try { + final status = await Permission.notification.status; + return status.isGranted; + } catch (_) { + return false; + } + } + + return false; + } + static Future _initFlutterNotificationsPlugin() async { const initializationSettingsAndroid = AndroidInitializationSettings( '@mipmap/ic_launcher', diff --git a/packages/uni_app/lib/generated/intl/messages_all.dart b/packages/uni_app/lib/generated/intl/messages_all.dart index 4aa88b6e7..fb1bd2689 100644 --- a/packages/uni_app/lib/generated/intl/messages_all.dart +++ b/packages/uni_app/lib/generated/intl/messages_all.dart @@ -40,8 +40,7 @@ Future initializeMessages(String localeName) async { var availableLocale = Intl.verifiedLocale( localeName, (locale) => _deferredLibraries[locale] != null, - onFailure: (_) => null, - ); + onFailure: (_) => null); if (availableLocale == null) { return new Future.value(false); } @@ -61,11 +60,8 @@ bool _messagesExistFor(String locale) { } MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) { - var actualLocale = Intl.verifiedLocale( - locale, - _messagesExistFor, - onFailure: (_) => null, - ); + var actualLocale = Intl.verifiedLocale(locale, _messagesExistFor, + onFailure: (_) => null); if (actualLocale == null) return null; return _findExact(actualLocale); } diff --git a/packages/uni_app/lib/generated/intl/messages_en.dart b/packages/uni_app/lib/generated/intl/messages_en.dart index 6fb90730a..604ebef50 100644 --- a/packages/uni_app/lib/generated/intl/messages_en.dart +++ b/packages/uni_app/lib/generated/intl/messages_en.dart @@ -19,442 +19,246 @@ typedef String MessageIfAbsent(String messageStr, List args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'en'; - static m0(type) => - "${Intl.select(type, {'all_dishes': 'All dishes', 'meat_dishes': 'Meat dishes', 'fish_dishes': 'Fish dishes', 'vegetarian_dishes': 'Vegetarian dishes', 'soups': 'Soups', 'salads': 'Salads', 'diet_dishes': 'Diet dishes', 'dishes_of_the_day': 'Dishes of the Day', 'closed': 'Closed', 'other': 'Other'})}"; + static m0(type) => "${Intl.select(type, {'all_dishes': 'All dishes', 'meat_dishes': 'Meat dishes', 'fish_dishes': 'Fish dishes', 'vegetarian_dishes': 'Vegetarian dishes', 'soups': 'Soups', 'salads': 'Salads', 'diet_dishes': 'Diet dishes', 'dishes_of_the_day': 'Dishes of the Day', 'closed': 'Closed', 'other': 'Other', })}"; static m1(time) => "last refresh at ${time}"; - static m2(time) => - "${Intl.plural(time, zero: 'Refreshed ${time} minutes ago', one: 'Refreshed ${time} minute ago', other: 'Refreshed ${time} minutes ago')}"; + static m2(time) => "${Intl.plural(time, zero: 'Refreshed ${time} minutes ago', one: 'Refreshed ${time} minute ago', other: 'Refreshed ${time} minutes ago')}"; - static m3(title) => - "${Intl.select(title, {'horario': 'Schedule', 'exames': 'Exams', 'area': 'Personal Area', 'cadeiras': 'Course Units', 'autocarros': 'Buses', 'locais': 'Places', 'restaurantes': 'Restaurants', 'calendario': 'Calendar', 'biblioteca': 'Library', 'percurso_academico': 'Academic Path', 'mapa': 'Map', 'faculdade': 'Faculty', 'other': 'Other'})}"; + static m3(title) => "${Intl.select(title, {'horario': 'Schedule', 'exames': 'Exams', 'area': 'Personal Area', 'cadeiras': 'Course Units', 'autocarros': 'Buses', 'locais': 'Places', 'restaurantes': 'Restaurants', 'calendario': 'Calendar', 'biblioteca': 'Library', 'percurso_academico': 'Academic Path', 'mapa': 'Map', 'faculdade': 'Faculty', 'other': 'Other', })}"; - static m4(period) => - "${Intl.select(period, {'lunch': 'Lunch', 'dinner': 'Dinner', 'other': 'Other'})}"; + static m4(period) => "${Intl.select(period, {'lunch': 'Lunch', 'dinner': 'Dinner', 'other': 'Other', })}"; final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "about": MessageLookupByLibrary.simpleMessage("About us"), - "academic_services": MessageLookupByLibrary.simpleMessage( - "Academic services", - ), - "accept": MessageLookupByLibrary.simpleMessage("Accept"), - "account_card_title": MessageLookupByLibrary.simpleMessage( - "Checking account", - ), - "add": MessageLookupByLibrary.simpleMessage("Add"), - "add_photo": MessageLookupByLibrary.simpleMessage("Add photo"), - "add_quota": MessageLookupByLibrary.simpleMessage("Add quota"), - "add_restaurants": MessageLookupByLibrary.simpleMessage("Add restaurants"), - "add_to_calendar": MessageLookupByLibrary.simpleMessage("Add to calendar"), - "add_widget": MessageLookupByLibrary.simpleMessage("Add widget"), - "agree_terms": MessageLookupByLibrary.simpleMessage( - "By entering you agree with these", - ), - "all": MessageLookupByLibrary.simpleMessage("All"), - "all_feminine": MessageLookupByLibrary.simpleMessage("All"), - "all_widgets_added": MessageLookupByLibrary.simpleMessage( - "All available widgets have already been added to your personal area!", - ), - "apply": MessageLookupByLibrary.simpleMessage("Apply"), - "assessments": MessageLookupByLibrary.simpleMessage("Assessments"), - "at_least_one_college": MessageLookupByLibrary.simpleMessage( - "Select at least one college", - ), - "available_amount": MessageLookupByLibrary.simpleMessage( - "Available amount", - ), - "available_elements": MessageLookupByLibrary.simpleMessage( - "Available elements", - ), - "average": MessageLookupByLibrary.simpleMessage("Average"), - "balance": MessageLookupByLibrary.simpleMessage("Balance"), - "banner_info": MessageLookupByLibrary.simpleMessage( - "We collect anonymous usage data to help improve your experience. You can opt out anytime in the settings.", - ), - "bibliography": MessageLookupByLibrary.simpleMessage("Bibliography"), - "breakfast": MessageLookupByLibrary.simpleMessage("Breakfast"), - "bs_description": MessageLookupByLibrary.simpleMessage( - "Did you find any bugs in the application?\nDo you have any suggestions for the app?\nTell us so we can improve!", - ), - "bug_description": MessageLookupByLibrary.simpleMessage( - "Bug found, how to reproduce it, etc.", - ), - "bug_description_Suggestion": MessageLookupByLibrary.simpleMessage( - "Suggestion", - ), - "bug_description_error": MessageLookupByLibrary.simpleMessage("Error"), - "bug_description_other": MessageLookupByLibrary.simpleMessage("Other"), - "bug_description_unexpected_behaviour": - MessageLookupByLibrary.simpleMessage("Unexpected Behaviour"), - "bug_description_visual_detail": MessageLookupByLibrary.simpleMessage( - "Visual Detail", - ), - "bus_error": MessageLookupByLibrary.simpleMessage( - "Unable to get information", - ), - "bus_information": MessageLookupByLibrary.simpleMessage( - "Select the buses you want information about:", - ), - "buses_personalize": MessageLookupByLibrary.simpleMessage( - "Personalize your buses here", - ), - "buses_text": MessageLookupByLibrary.simpleMessage( - "Favorite buses will be displayed in the favorites \'Bus\' widget. The remaining ones will only be displayed on the page.", - ), - "calendar": MessageLookupByLibrary.simpleMessage("Calendar"), - "cancel": MessageLookupByLibrary.simpleMessage("Cancel"), - "change": MessageLookupByLibrary.simpleMessage("Change"), - "change_password": MessageLookupByLibrary.simpleMessage("Change password"), - "change_prompt": MessageLookupByLibrary.simpleMessage( - "Do you want to change the password?", - ), - "check_internet": MessageLookupByLibrary.simpleMessage( - "Check your internet connection", - ), - "class_registration": MessageLookupByLibrary.simpleMessage( - "Class Registration", - ), - "collect_usage_stats": MessageLookupByLibrary.simpleMessage( - "Collect usage statistics", - ), - "college": MessageLookupByLibrary.simpleMessage("College: "), - "college_select": MessageLookupByLibrary.simpleMessage( - "select your college(s)", - ), - "conclude": MessageLookupByLibrary.simpleMessage("Done"), - "configured_buses": MessageLookupByLibrary.simpleMessage( - "Configured Buses", - ), - "confirm": MessageLookupByLibrary.simpleMessage("Confirm"), - "confirm_logout": MessageLookupByLibrary.simpleMessage( - "Do you really want to log out? Your local data will be deleted and you will have to log in again.", - ), - "consent": MessageLookupByLibrary.simpleMessage( - "I consent to this information being reviewed by NIAEFEUP and may be deleted at my request.", - ), - "contact": MessageLookupByLibrary.simpleMessage("Contact (optional)"), - "copy_center": MessageLookupByLibrary.simpleMessage("Copy center"), - "copy_center_building": MessageLookupByLibrary.simpleMessage( - "Floor -1 of building B | AEFEUP building", - ), - "courseRegent": MessageLookupByLibrary.simpleMessage("Course Regent"), - "course_class": MessageLookupByLibrary.simpleMessage("Classes"), - "course_info": MessageLookupByLibrary.simpleMessage("Info"), - "courses": MessageLookupByLibrary.simpleMessage("Courses"), - "current_state": MessageLookupByLibrary.simpleMessage("Current state: "), - "current_year": MessageLookupByLibrary.simpleMessage( - "Current academic year: ", - ), - "decrement": MessageLookupByLibrary.simpleMessage("Decrement 1,00€"), - "description": MessageLookupByLibrary.simpleMessage("Description"), - "desired_email": MessageLookupByLibrary.simpleMessage( - "Email where you want to be contacted", - ), - "dinner": MessageLookupByLibrary.simpleMessage("Dinner"), - "dish_type": m0, - "dish_types": MessageLookupByLibrary.simpleMessage("Dish Types"), - "dona_bia": MessageLookupByLibrary.simpleMessage( - "D. Beatriz\'s stationery store", - ), - "dona_bia_building": MessageLookupByLibrary.simpleMessage( - "Floor -1 of building B (B-142)", - ), - "download_error": MessageLookupByLibrary.simpleMessage( - "Error downloading the file", - ), - "drag_and_drop": MessageLookupByLibrary.simpleMessage( - "Drag and drop elements", - ), - "ects": MessageLookupByLibrary.simpleMessage("ECTS performed: "), - "edit_off": MessageLookupByLibrary.simpleMessage("Edit"), - "edit_on": MessageLookupByLibrary.simpleMessage("Finish editing"), - "email": MessageLookupByLibrary.simpleMessage("Email"), - "empty_text": MessageLookupByLibrary.simpleMessage( - "Please fill in this field", - ), - "evaluation": MessageLookupByLibrary.simpleMessage("Evaluation"), - "exams": MessageLookupByLibrary.simpleMessage("Exams"), - "exams_filter": MessageLookupByLibrary.simpleMessage( - "Exams Filter Settings", - ), - "exit_confirm": MessageLookupByLibrary.simpleMessage( - "Do you really want to exit?", - ), - "expired_password": MessageLookupByLibrary.simpleMessage( - "Your password has expired", - ), - "fail_to_authenticate": MessageLookupByLibrary.simpleMessage( - "Failed to authenticate", - ), - "failed_login": MessageLookupByLibrary.simpleMessage("Login failed"), - "failed_upload": MessageLookupByLibrary.simpleMessage("Failed to upload"), - "favorite_filter": MessageLookupByLibrary.simpleMessage("Favorites"), - "fee_date": MessageLookupByLibrary.simpleMessage("Deadline"), - "fee_notification": MessageLookupByLibrary.simpleMessage("Fee deadline"), - "feedback_description": MessageLookupByLibrary.simpleMessage( - "Report an issue or suggest an improvement", - ), - "files": MessageLookupByLibrary.simpleMessage("Files"), - "first_year_registration": MessageLookupByLibrary.simpleMessage( - "Year of first registration: ", - ), - "floor": MessageLookupByLibrary.simpleMessage("Floor"), - "floors": MessageLookupByLibrary.simpleMessage("Floors"), - "forgot_password": MessageLookupByLibrary.simpleMessage("Forgot password?"), - "frequency": MessageLookupByLibrary.simpleMessage("Eligibility for exams"), - "generate_reference": MessageLookupByLibrary.simpleMessage( - "Generate reference", - ), - "geral_registration": MessageLookupByLibrary.simpleMessage( - "General Registration", - ), - "goi": MessageLookupByLibrary.simpleMessage( - "Orientation and Integration Office", - ), - "improvement_registration": MessageLookupByLibrary.simpleMessage( - "Enrollment for Improvement", - ), - "increment": MessageLookupByLibrary.simpleMessage("Increment 1,00€"), - "instructor": MessageLookupByLibrary.simpleMessage("Instructor"), - "instructors": MessageLookupByLibrary.simpleMessage("Instructors"), - "internet_status_exception": MessageLookupByLibrary.simpleMessage( - "Check your internet connection", - ), - "invalid_credentials": MessageLookupByLibrary.simpleMessage( - "Invalid credentials", - ), - "keep_login": MessageLookupByLibrary.simpleMessage("Remember me"), - "language": MessageLookupByLibrary.simpleMessage("Language"), - "last_refresh_time": m1, - "last_timestamp": m2, - "leave_feedback": MessageLookupByLibrary.simpleMessage("Leave feedback"), - "lectures": MessageLookupByLibrary.simpleMessage("Lectures"), - "library": MessageLookupByLibrary.simpleMessage("Library"), - "library_occupation": MessageLookupByLibrary.simpleMessage( - "Library Occupation", - ), - "load_error": MessageLookupByLibrary.simpleMessage( - "Error loading the information", - ), - "loading_terms": MessageLookupByLibrary.simpleMessage( - "Loading Terms and Conditions...", - ), - "location": MessageLookupByLibrary.simpleMessage("Location"), - "login": MessageLookupByLibrary.simpleMessage("Login"), - "login_with_credentials": MessageLookupByLibrary.simpleMessage( - "Login with credentials", - ), - "logout": MessageLookupByLibrary.simpleMessage("Log out"), - "lunch": MessageLookupByLibrary.simpleMessage("Lunch"), - "menus": MessageLookupByLibrary.simpleMessage("Menus"), - "min_value_reference": MessageLookupByLibrary.simpleMessage( - "Minimum value: 1,00 €", - ), - "multimedia_center": MessageLookupByLibrary.simpleMessage( - "Multimedia center", - ), - "nav_title": m3, - "news": MessageLookupByLibrary.simpleMessage("News"), - "no": MessageLookupByLibrary.simpleMessage("No"), - "noExamsScheduled": MessageLookupByLibrary.simpleMessage( - "No exams scheduled", - ), - "noInstructors": MessageLookupByLibrary.simpleMessage( - "No instructors assigned", - ), - "no_app": MessageLookupByLibrary.simpleMessage( - "No app found to open the file", - ), - "no_bus": MessageLookupByLibrary.simpleMessage("Don\'t miss any bus!"), - "no_bus_stops": MessageLookupByLibrary.simpleMessage("No configured stops"), - "no_class": MessageLookupByLibrary.simpleMessage( - "There are no classes to display", - ), - "no_classes": MessageLookupByLibrary.simpleMessage("No classes to present"), - "no_classes_on": MessageLookupByLibrary.simpleMessage( - "You don\'t have classes on", - ), - "no_classes_on_weekend": MessageLookupByLibrary.simpleMessage( - "You don\'t have classes on", - ), - "no_classes_this_week": MessageLookupByLibrary.simpleMessage( - "You have no classes this week", - ), - "no_college": MessageLookupByLibrary.simpleMessage("no college"), - "no_course_units": MessageLookupByLibrary.simpleMessage( - "No course units in the selected period", - ), - "no_courses": MessageLookupByLibrary.simpleMessage( - "No courses we\'re found", - ), - "no_courses_description": MessageLookupByLibrary.simpleMessage( - "Try to refresh the page", - ), - "no_data": MessageLookupByLibrary.simpleMessage( - "There is no data to show at this time", - ), - "no_date": MessageLookupByLibrary.simpleMessage("No date"), - "no_events": MessageLookupByLibrary.simpleMessage("No events found"), - "no_exams": MessageLookupByLibrary.simpleMessage( - "You have no exams scheduled\n", - ), - "no_exams_label": MessageLookupByLibrary.simpleMessage( - "Looks like you are on vacation!", - ), - "no_favorite_restaurants": MessageLookupByLibrary.simpleMessage( - "No favorite restaurants open", - ), - "no_files": MessageLookupByLibrary.simpleMessage( - "There\'s no files attached", - ), - "no_files_found": MessageLookupByLibrary.simpleMessage("No files found"), - "no_files_label": MessageLookupByLibrary.simpleMessage( - "You have nothing to see!", - ), - "no_info": MessageLookupByLibrary.simpleMessage( - "There is no information to display", - ), - "no_internet": MessageLookupByLibrary.simpleMessage( - "It looks like you\'re offline", - ), - "no_library_info": MessageLookupByLibrary.simpleMessage( - "No library occupation information available", - ), - "no_link": MessageLookupByLibrary.simpleMessage( - "We couldn\'t open the link", - ), - "no_menu_info": MessageLookupByLibrary.simpleMessage( - "There is no information available about meals", - ), - "no_menus": MessageLookupByLibrary.simpleMessage( - "There are no meals available", - ), - "no_name_course": MessageLookupByLibrary.simpleMessage("Unnamed course"), - "no_places_info": MessageLookupByLibrary.simpleMessage( - "There is no information available about places", - ), - "no_print_info": MessageLookupByLibrary.simpleMessage( - "No print balance information", - ), - "no_references": MessageLookupByLibrary.simpleMessage( - "There are no references to pay", - ), - "no_results": MessageLookupByLibrary.simpleMessage("No match"), - "no_selected_courses": MessageLookupByLibrary.simpleMessage( - "There are no course units to display", - ), - "no_selected_exams": MessageLookupByLibrary.simpleMessage( - "There are no exams to present", - ), - "no_trips": MessageLookupByLibrary.simpleMessage( - "No trips found at the moment", - ), - "notifications": MessageLookupByLibrary.simpleMessage("Notifications"), - "now": MessageLookupByLibrary.simpleMessage("Now"), - "occurrence_type": MessageLookupByLibrary.simpleMessage( - "Type of occurrence", - ), - "of_month": MessageLookupByLibrary.simpleMessage("of"), - "open_error": MessageLookupByLibrary.simpleMessage( - "Error opening the file", - ), - "other_links": MessageLookupByLibrary.simpleMessage("Other links"), - "pass_change_request": MessageLookupByLibrary.simpleMessage( - "For security reasons, passwords must be changed periodically.", - ), - "password": MessageLookupByLibrary.simpleMessage("Password"), - "pendent_references": MessageLookupByLibrary.simpleMessage( - "Pending references", - ), - "permission_denied": MessageLookupByLibrary.simpleMessage( - "Permission denied", - ), - "personal_assistance": MessageLookupByLibrary.simpleMessage( - "Face-to-face assistance", - ), - "press_again": MessageLookupByLibrary.simpleMessage("Press again to exit"), - "print": MessageLookupByLibrary.simpleMessage("Print"), - "print_balance": MessageLookupByLibrary.simpleMessage("Print balance"), - "prints": MessageLookupByLibrary.simpleMessage("Prints"), - "problem_id": MessageLookupByLibrary.simpleMessage( - "Brief identification of the problem", - ), - "program": MessageLookupByLibrary.simpleMessage("Program"), - "reference_sigarra_help": MessageLookupByLibrary.simpleMessage( - "The generated reference data will appear in Sigarra, checking account.\nProfile > Checking Account", - ), - "reference_success": MessageLookupByLibrary.simpleMessage( - "Reference created successfully!", - ), - "reject": MessageLookupByLibrary.simpleMessage("Reject"), - "remaining_instructors": MessageLookupByLibrary.simpleMessage( - "Remaining Instructors", - ), - "remove": MessageLookupByLibrary.simpleMessage("Delete"), - "report_error": MessageLookupByLibrary.simpleMessage("Report error"), - "restaurant_main_page": MessageLookupByLibrary.simpleMessage( - "Do you want to see your favorite restaurants in the main page?", - ), - "restaurant_period": m4, - "restaurants": MessageLookupByLibrary.simpleMessage("Restaurants"), - "room": MessageLookupByLibrary.simpleMessage("Room"), - "save": MessageLookupByLibrary.simpleMessage("Save"), - "schedule": MessageLookupByLibrary.simpleMessage("Schedule"), - "school_calendar": MessageLookupByLibrary.simpleMessage("School Calendar"), - "search": MessageLookupByLibrary.simpleMessage("Search"), - "see_more": MessageLookupByLibrary.simpleMessage("See more"), - "select_all": MessageLookupByLibrary.simpleMessage("Select All"), - "semester": MessageLookupByLibrary.simpleMessage("Semester"), - "send": MessageLookupByLibrary.simpleMessage("Send"), - "sent_error": MessageLookupByLibrary.simpleMessage( - "An error occurred in sending", - ), - "services": MessageLookupByLibrary.simpleMessage("Services"), - "settings": MessageLookupByLibrary.simpleMessage("Settings"), - "snackbar": MessageLookupByLibrary.simpleMessage("Snackbar"), - "some_error": MessageLookupByLibrary.simpleMessage("Some error!"), - "stcp_stops": MessageLookupByLibrary.simpleMessage("STCP - Upcoming Trips"), - "student_number": MessageLookupByLibrary.simpleMessage("Student Number"), - "success": MessageLookupByLibrary.simpleMessage("Sent with success"), - "successful_open": MessageLookupByLibrary.simpleMessage( - "File opened successfully", - ), - "tele_assistance": MessageLookupByLibrary.simpleMessage( - "Telephone assistance", - ), - "tele_personal_assistance": MessageLookupByLibrary.simpleMessage( - "Face-to-face and telephone assistance", - ), - "telephone": MessageLookupByLibrary.simpleMessage("Telephone"), - "terms": MessageLookupByLibrary.simpleMessage("Terms and Conditions"), - "terms_change": MessageLookupByLibrary.simpleMessage( - "Changes on uni\'s Terms and Conditions", - ), - "theme": MessageLookupByLibrary.simpleMessage("Theme"), - "title": MessageLookupByLibrary.simpleMessage("Title"), - "try_again": MessageLookupByLibrary.simpleMessage("Try again"), - "try_different_login": MessageLookupByLibrary.simpleMessage( - "Having trouble signing in?", - ), - "uc_info": MessageLookupByLibrary.simpleMessage("Open UC page"), - "ucs": MessageLookupByLibrary.simpleMessage("UCS"), - "unavailable": MessageLookupByLibrary.simpleMessage("Unavailable"), - "until": MessageLookupByLibrary.simpleMessage("Until"), - "valid_email": MessageLookupByLibrary.simpleMessage( - "Please enter a valid email", - ), - "view_course_details": MessageLookupByLibrary.simpleMessage( - "View course details", - ), - "widget_prompt": MessageLookupByLibrary.simpleMessage( - "Choose a widget to add to your personal area:", - ), - "wrong_credentials_exception": MessageLookupByLibrary.simpleMessage( - "Invalid credentials", - ), - "year": MessageLookupByLibrary.simpleMessage("Year"), - "yes": MessageLookupByLibrary.simpleMessage("Yes"), + static _notInlinedMessages(_) => { + "about" : MessageLookupByLibrary.simpleMessage("About us"), + "academic_services" : MessageLookupByLibrary.simpleMessage("Academic services"), + "accept" : MessageLookupByLibrary.simpleMessage("Accept"), + "account_card_title" : MessageLookupByLibrary.simpleMessage("Checking account"), + "add" : MessageLookupByLibrary.simpleMessage("Add"), + "add_photo" : MessageLookupByLibrary.simpleMessage("Add photo"), + "add_quota" : MessageLookupByLibrary.simpleMessage("Add quota"), + "add_restaurants" : MessageLookupByLibrary.simpleMessage("Add restaurants"), + "add_to_calendar" : MessageLookupByLibrary.simpleMessage("Add to calendar"), + "add_widget" : MessageLookupByLibrary.simpleMessage("Add widget"), + "agree_terms" : MessageLookupByLibrary.simpleMessage("By entering you agree with these"), + "all" : MessageLookupByLibrary.simpleMessage("All"), + "all_feminine" : MessageLookupByLibrary.simpleMessage("All"), + "all_widgets_added" : MessageLookupByLibrary.simpleMessage("All available widgets have already been added to your personal area!"), + "apply" : MessageLookupByLibrary.simpleMessage("Apply"), + "assessments" : MessageLookupByLibrary.simpleMessage("Assessments"), + "at_least_one_college" : MessageLookupByLibrary.simpleMessage("Select at least one college"), + "available_amount" : MessageLookupByLibrary.simpleMessage("Available amount"), + "available_elements" : MessageLookupByLibrary.simpleMessage("Available elements"), + "average" : MessageLookupByLibrary.simpleMessage("Average"), + "balance" : MessageLookupByLibrary.simpleMessage("Balance"), + "banner_info" : MessageLookupByLibrary.simpleMessage("We collect anonymous usage data to help improve your experience. You can opt out anytime in the settings."), + "bibliography" : MessageLookupByLibrary.simpleMessage("Bibliography"), + "breakfast" : MessageLookupByLibrary.simpleMessage("Breakfast"), + "bs_description" : MessageLookupByLibrary.simpleMessage("Did you find any bugs in the application?\nDo you have any suggestions for the app?\nTell us so we can improve!"), + "bug_description" : MessageLookupByLibrary.simpleMessage("Bug found, how to reproduce it, etc."), + "bug_description_Suggestion" : MessageLookupByLibrary.simpleMessage("Suggestion"), + "bug_description_error" : MessageLookupByLibrary.simpleMessage("Error"), + "bug_description_other" : MessageLookupByLibrary.simpleMessage("Other"), + "bug_description_unexpected_behaviour" : MessageLookupByLibrary.simpleMessage("Unexpected Behaviour"), + "bug_description_visual_detail" : MessageLookupByLibrary.simpleMessage("Visual Detail"), + "bus_error" : MessageLookupByLibrary.simpleMessage("Unable to get information"), + "bus_information" : MessageLookupByLibrary.simpleMessage("Select the buses you want information about:"), + "buses_personalize" : MessageLookupByLibrary.simpleMessage("Personalize your buses here"), + "buses_text" : MessageLookupByLibrary.simpleMessage("Favorite buses will be displayed in the favorites \'Bus\' widget. The remaining ones will only be displayed on the page."), + "calendar" : MessageLookupByLibrary.simpleMessage("Calendar"), + "cancel" : MessageLookupByLibrary.simpleMessage("Cancel"), + "change" : MessageLookupByLibrary.simpleMessage("Change"), + "change_password" : MessageLookupByLibrary.simpleMessage("Change password"), + "change_prompt" : MessageLookupByLibrary.simpleMessage("Do you want to change the password?"), + "check_internet" : MessageLookupByLibrary.simpleMessage("Check your internet connection"), + "class_registration" : MessageLookupByLibrary.simpleMessage("Class Registration"), + "collect_usage_stats" : MessageLookupByLibrary.simpleMessage("Collect usage statistics"), + "college" : MessageLookupByLibrary.simpleMessage("College: "), + "college_select" : MessageLookupByLibrary.simpleMessage("select your college(s)"), + "conclude" : MessageLookupByLibrary.simpleMessage("Done"), + "configured_buses" : MessageLookupByLibrary.simpleMessage("Configured Buses"), + "confirm" : MessageLookupByLibrary.simpleMessage("Confirm"), + "confirm_logout" : MessageLookupByLibrary.simpleMessage("Do you really want to log out? Your local data will be deleted and you will have to log in again."), + "consent" : MessageLookupByLibrary.simpleMessage("I consent to this information being reviewed by NIAEFEUP and may be deleted at my request."), + "contact" : MessageLookupByLibrary.simpleMessage("Contact (optional)"), + "copy_center" : MessageLookupByLibrary.simpleMessage("Copy center"), + "copy_center_building" : MessageLookupByLibrary.simpleMessage("Floor -1 of building B | AEFEUP building"), + "courseRegent" : MessageLookupByLibrary.simpleMessage("Course Regent"), + "course_class" : MessageLookupByLibrary.simpleMessage("Classes"), + "course_info" : MessageLookupByLibrary.simpleMessage("Info"), + "courses" : MessageLookupByLibrary.simpleMessage("Courses"), + "current_state" : MessageLookupByLibrary.simpleMessage("Current state: "), + "current_year" : MessageLookupByLibrary.simpleMessage("Current academic year: "), + "decrement" : MessageLookupByLibrary.simpleMessage("Decrement 1,00€"), + "description" : MessageLookupByLibrary.simpleMessage("Description"), + "desired_email" : MessageLookupByLibrary.simpleMessage("Email where you want to be contacted"), + "dinner" : MessageLookupByLibrary.simpleMessage("Dinner"), + "dish_type" : m0, + "dish_types" : MessageLookupByLibrary.simpleMessage("Dish Types"), + "dona_bia" : MessageLookupByLibrary.simpleMessage("D. Beatriz\'s stationery store"), + "dona_bia_building" : MessageLookupByLibrary.simpleMessage("Floor -1 of building B (B-142)"), + "download_error" : MessageLookupByLibrary.simpleMessage("Error downloading the file"), + "drag_and_drop" : MessageLookupByLibrary.simpleMessage("Drag and drop elements"), + "ects" : MessageLookupByLibrary.simpleMessage("ECTS performed: "), + "edit_off" : MessageLookupByLibrary.simpleMessage("Edit"), + "edit_on" : MessageLookupByLibrary.simpleMessage("Finish editing"), + "email" : MessageLookupByLibrary.simpleMessage("Email"), + "empty_text" : MessageLookupByLibrary.simpleMessage("Please fill in this field"), + "evaluation" : MessageLookupByLibrary.simpleMessage("Evaluation"), + "exams" : MessageLookupByLibrary.simpleMessage("Exams"), + "exams_filter" : MessageLookupByLibrary.simpleMessage("Exams Filter Settings"), + "exams_intro_message" : MessageLookupByLibrary.simpleMessage("Stay always updated with your exams"), + "exit_confirm" : MessageLookupByLibrary.simpleMessage("Do you really want to exit?"), + "expired_password" : MessageLookupByLibrary.simpleMessage("Your password has expired"), + "fail_to_authenticate" : MessageLookupByLibrary.simpleMessage("Failed to authenticate"), + "failed_login" : MessageLookupByLibrary.simpleMessage("Login failed"), + "failed_upload" : MessageLookupByLibrary.simpleMessage("Failed to upload"), + "favorite_filter" : MessageLookupByLibrary.simpleMessage("Favorites"), + "fee_date" : MessageLookupByLibrary.simpleMessage("Deadline"), + "fee_notification" : MessageLookupByLibrary.simpleMessage("Fee deadline"), + "feedback_description" : MessageLookupByLibrary.simpleMessage("Report an issue or suggest an improvement"), + "files" : MessageLookupByLibrary.simpleMessage("Files"), + "first_year_registration" : MessageLookupByLibrary.simpleMessage("Year of first registration: "), + "floor" : MessageLookupByLibrary.simpleMessage("Floor"), + "floors" : MessageLookupByLibrary.simpleMessage("Floors"), + "forgot_password" : MessageLookupByLibrary.simpleMessage("Forgot password?"), + "frequency" : MessageLookupByLibrary.simpleMessage("Eligibility for exams"), + "generate_reference" : MessageLookupByLibrary.simpleMessage("Generate reference"), + "geral_registration" : MessageLookupByLibrary.simpleMessage("General Registration"), + "goi" : MessageLookupByLibrary.simpleMessage("Orientation and Integration Office"), + "improvement_registration" : MessageLookupByLibrary.simpleMessage("Enrollment for Improvement"), + "increment" : MessageLookupByLibrary.simpleMessage("Increment 1,00€"), + "instructor" : MessageLookupByLibrary.simpleMessage("Instructor"), + "instructors" : MessageLookupByLibrary.simpleMessage("Instructors"), + "internet_status_exception" : MessageLookupByLibrary.simpleMessage("Check your internet connection"), + "invalid_credentials" : MessageLookupByLibrary.simpleMessage("Invalid credentials"), + "keep_login" : MessageLookupByLibrary.simpleMessage("Remember me"), + "language" : MessageLookupByLibrary.simpleMessage("Language"), + "last_refresh_time" : m1, + "last_timestamp" : m2, + "leave_feedback" : MessageLookupByLibrary.simpleMessage("Leave feedback"), + "lectures" : MessageLookupByLibrary.simpleMessage("Lectures"), + "library" : MessageLookupByLibrary.simpleMessage("Library"), + "library_occupation" : MessageLookupByLibrary.simpleMessage("Library Occupation"), + "load_error" : MessageLookupByLibrary.simpleMessage("Error loading the information"), + "loading_terms" : MessageLookupByLibrary.simpleMessage("Loading Terms and Conditions..."), + "location" : MessageLookupByLibrary.simpleMessage("Location"), + "login" : MessageLookupByLibrary.simpleMessage("Login"), + "login_with_credentials" : MessageLookupByLibrary.simpleMessage("Login with credentials"), + "logout" : MessageLookupByLibrary.simpleMessage("Log out"), + "lunch" : MessageLookupByLibrary.simpleMessage("Lunch"), + "map" : MessageLookupByLibrary.simpleMessage("Map"), + "map_intro_message" : MessageLookupByLibrary.simpleMessage("Explore the campus with our interactive map"), + "menus" : MessageLookupByLibrary.simpleMessage("Menus"), + "min_value_reference" : MessageLookupByLibrary.simpleMessage("Minimum value: 1,00 €"), + "multimedia_center" : MessageLookupByLibrary.simpleMessage("Multimedia center"), + "nav_title" : m3, + "news" : MessageLookupByLibrary.simpleMessage("News"), + "no" : MessageLookupByLibrary.simpleMessage("No"), + "noExamsScheduled" : MessageLookupByLibrary.simpleMessage("No exams scheduled"), + "noInstructors" : MessageLookupByLibrary.simpleMessage("No instructors assigned"), + "no_app" : MessageLookupByLibrary.simpleMessage("No app found to open the file"), + "no_bus" : MessageLookupByLibrary.simpleMessage("Don\'t miss any bus!"), + "no_bus_stops" : MessageLookupByLibrary.simpleMessage("No configured stops"), + "no_class" : MessageLookupByLibrary.simpleMessage("There are no classes to display"), + "no_classes" : MessageLookupByLibrary.simpleMessage("No classes to present"), + "no_classes_on" : MessageLookupByLibrary.simpleMessage("You don\'t have classes on"), + "no_classes_on_weekend" : MessageLookupByLibrary.simpleMessage("You don\'t have classes on"), + "no_classes_this_week" : MessageLookupByLibrary.simpleMessage("You have no classes this week"), + "no_college" : MessageLookupByLibrary.simpleMessage("no college"), + "no_course_units" : MessageLookupByLibrary.simpleMessage("No course units in the selected period"), + "no_courses" : MessageLookupByLibrary.simpleMessage("No courses we\'re found"), + "no_courses_description" : MessageLookupByLibrary.simpleMessage("Try to refresh the page"), + "no_data" : MessageLookupByLibrary.simpleMessage("There is no data to show at this time"), + "no_date" : MessageLookupByLibrary.simpleMessage("No date"), + "no_events" : MessageLookupByLibrary.simpleMessage("No events found"), + "no_exams" : MessageLookupByLibrary.simpleMessage("You have no exams scheduled\n"), + "no_exams_label" : MessageLookupByLibrary.simpleMessage("Looks like you are on vacation!"), + "no_favorite_restaurants" : MessageLookupByLibrary.simpleMessage("No favorite restaurants open"), + "no_files" : MessageLookupByLibrary.simpleMessage("There\'s no files attached"), + "no_files_found" : MessageLookupByLibrary.simpleMessage("No files found"), + "no_files_label" : MessageLookupByLibrary.simpleMessage("You have nothing to see!"), + "no_info" : MessageLookupByLibrary.simpleMessage("There is no information to display"), + "no_internet" : MessageLookupByLibrary.simpleMessage("It looks like you\'re offline"), + "no_library_info" : MessageLookupByLibrary.simpleMessage("No library occupation information available"), + "no_link" : MessageLookupByLibrary.simpleMessage("We couldn\'t open the link"), + "no_menu_info" : MessageLookupByLibrary.simpleMessage("There is no information available about meals"), + "no_menus" : MessageLookupByLibrary.simpleMessage("There are no meals available"), + "no_name_course" : MessageLookupByLibrary.simpleMessage("Unnamed course"), + "no_places_info" : MessageLookupByLibrary.simpleMessage("There is no information available about places"), + "no_print_info" : MessageLookupByLibrary.simpleMessage("No print balance information"), + "no_references" : MessageLookupByLibrary.simpleMessage("There are no references to pay"), + "no_results" : MessageLookupByLibrary.simpleMessage("No match"), + "no_selected_courses" : MessageLookupByLibrary.simpleMessage("There are no course units to display"), + "no_selected_exams" : MessageLookupByLibrary.simpleMessage("There are no exams to present"), + "no_trips" : MessageLookupByLibrary.simpleMessage("No trips found at the moment"), + "notifications" : MessageLookupByLibrary.simpleMessage("Notifications"), + "notifications_intro_message" : MessageLookupByLibrary.simpleMessage("Would you like to receive notifications regarding important updates and alerts, including fee deadlines?"), + "now" : MessageLookupByLibrary.simpleMessage("Now"), + "occurrence_type" : MessageLookupByLibrary.simpleMessage("Type of occurrence"), + "of_month" : MessageLookupByLibrary.simpleMessage("of"), + "open_error" : MessageLookupByLibrary.simpleMessage("Error opening the file"), + "other_links" : MessageLookupByLibrary.simpleMessage("Other links"), + "pass_change_request" : MessageLookupByLibrary.simpleMessage("For security reasons, passwords must be changed periodically."), + "password" : MessageLookupByLibrary.simpleMessage("Password"), + "pendent_references" : MessageLookupByLibrary.simpleMessage("Pending references"), + "permission_denied" : MessageLookupByLibrary.simpleMessage("Permission denied"), + "personal_assistance" : MessageLookupByLibrary.simpleMessage("Face-to-face assistance"), + "press_again" : MessageLookupByLibrary.simpleMessage("Press again to exit"), + "print" : MessageLookupByLibrary.simpleMessage("Print"), + "print_balance" : MessageLookupByLibrary.simpleMessage("Print balance"), + "prints" : MessageLookupByLibrary.simpleMessage("Prints"), + "problem_id" : MessageLookupByLibrary.simpleMessage("Brief identification of the problem"), + "program" : MessageLookupByLibrary.simpleMessage("Program"), + "reference_sigarra_help" : MessageLookupByLibrary.simpleMessage("The generated reference data will appear in Sigarra, checking account.\nProfile > Checking Account"), + "reference_success" : MessageLookupByLibrary.simpleMessage("Reference created successfully!"), + "reject" : MessageLookupByLibrary.simpleMessage("Reject"), + "remaining_instructors" : MessageLookupByLibrary.simpleMessage("Remaining Instructors"), + "remove" : MessageLookupByLibrary.simpleMessage("Delete"), + "report_error" : MessageLookupByLibrary.simpleMessage("Report error"), + "restaurant_main_page" : MessageLookupByLibrary.simpleMessage("Do you want to see your favorite restaurants in the main page?"), + "restaurant_period" : m4, + "restaurants" : MessageLookupByLibrary.simpleMessage("Restaurants"), + "restaurants_intro_message" : MessageLookupByLibrary.simpleMessage("Discover campus dining options and menus"), + "room" : MessageLookupByLibrary.simpleMessage("Room"), + "save" : MessageLookupByLibrary.simpleMessage("Save"), + "schedule" : MessageLookupByLibrary.simpleMessage("Schedule"), + "schedule_intro_message" : MessageLookupByLibrary.simpleMessage("Keep track of your daily classes and activities"), + "school_calendar" : MessageLookupByLibrary.simpleMessage("School Calendar"), + "search" : MessageLookupByLibrary.simpleMessage("Search"), + "see_more" : MessageLookupByLibrary.simpleMessage("See more"), + "select_all" : MessageLookupByLibrary.simpleMessage("Select All"), + "semester" : MessageLookupByLibrary.simpleMessage("Semester"), + "send" : MessageLookupByLibrary.simpleMessage("Send"), + "sent_error" : MessageLookupByLibrary.simpleMessage("An error occurred in sending"), + "services" : MessageLookupByLibrary.simpleMessage("Services"), + "services_intro_message" : MessageLookupByLibrary.simpleMessage("Access various campus services at your fingertips"), + "settings" : MessageLookupByLibrary.simpleMessage("Settings"), + "snackbar" : MessageLookupByLibrary.simpleMessage("Snackbar"), + "some_error" : MessageLookupByLibrary.simpleMessage("Some error!"), + "stcp_stops" : MessageLookupByLibrary.simpleMessage("STCP - Upcoming Trips"), + "student_number" : MessageLookupByLibrary.simpleMessage("Student Number"), + "success" : MessageLookupByLibrary.simpleMessage("Sent with success"), + "successful_open" : MessageLookupByLibrary.simpleMessage("File opened successfully"), + "tele_assistance" : MessageLookupByLibrary.simpleMessage("Telephone assistance"), + "tele_personal_assistance" : MessageLookupByLibrary.simpleMessage("Face-to-face and telephone assistance"), + "telephone" : MessageLookupByLibrary.simpleMessage("Telephone"), + "terms" : MessageLookupByLibrary.simpleMessage("Terms and Conditions"), + "terms_change" : MessageLookupByLibrary.simpleMessage("Changes on uni\'s Terms and Conditions"), + "theme" : MessageLookupByLibrary.simpleMessage("Theme"), + "title" : MessageLookupByLibrary.simpleMessage("Title"), + "try_again" : MessageLookupByLibrary.simpleMessage("Try again"), + "try_different_login" : MessageLookupByLibrary.simpleMessage("Having trouble signing in?"), + "uc_info" : MessageLookupByLibrary.simpleMessage("Open UC page"), + "ucs" : MessageLookupByLibrary.simpleMessage("UCS"), + "unavailable" : MessageLookupByLibrary.simpleMessage("Unavailable"), + "until" : MessageLookupByLibrary.simpleMessage("Until"), + "valid_email" : MessageLookupByLibrary.simpleMessage("Please enter a valid email"), + "view_course_details" : MessageLookupByLibrary.simpleMessage("View course details"), + "widget_prompt" : MessageLookupByLibrary.simpleMessage("Choose a widget to add to your personal area:"), + "wrong_credentials_exception" : MessageLookupByLibrary.simpleMessage("Invalid credentials"), + "year" : MessageLookupByLibrary.simpleMessage("Year"), + "yes" : MessageLookupByLibrary.simpleMessage("Yes") }; } diff --git a/packages/uni_app/lib/generated/intl/messages_pt_PT.dart b/packages/uni_app/lib/generated/intl/messages_pt_PT.dart index 0d32594cb..c9b103042 100644 --- a/packages/uni_app/lib/generated/intl/messages_pt_PT.dart +++ b/packages/uni_app/lib/generated/intl/messages_pt_PT.dart @@ -19,466 +19,246 @@ typedef String MessageIfAbsent(String messageStr, List args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'pt_PT'; - static m0(type) => - "${Intl.select(type, {'all_dishes': 'Todos os pratos', 'meat_dishes': 'Pratos de Carne', 'fish_dishes': 'Pratos de Peixe', 'vegetarian_dishes': 'Pratos Vegetarianos', 'soups': 'Sopas', 'salads': 'Saladas', 'diet_dishes': 'Pratos de Dieta', 'dishes_of_the_day': 'Pratos do Dia', 'closed': 'Encerrado', 'other': 'Outros'})}"; + static m0(type) => "${Intl.select(type, {'all_dishes': 'Todos os pratos', 'meat_dishes': 'Pratos de Carne', 'fish_dishes': 'Pratos de Peixe', 'vegetarian_dishes': 'Pratos Vegetarianos', 'soups': 'Sopas', 'salads': 'Saladas', 'diet_dishes': 'Pratos de Dieta', 'dishes_of_the_day': 'Pratos do Dia', 'closed': 'Encerrado', 'other': 'Outros', })}"; static m1(time) => "última atualização às ${time}"; - static m2(time) => - "${Intl.plural(time, zero: 'Atualizado há ${time} minutos', one: 'Atualizado há ${time} minuto', other: 'Atualizado há ${time} minutos')}"; + static m2(time) => "${Intl.plural(time, zero: 'Atualizado há ${time} minutos', one: 'Atualizado há ${time} minuto', other: 'Atualizado há ${time} minutos')}"; - static m3(title) => - "${Intl.select(title, {'horario': 'Horário', 'exames': 'Exames', 'area': 'Área Pessoal', 'cadeiras': 'Cadeiras', 'autocarros': 'Autocarros', 'locais': 'Locais', 'restaurantes': 'Restaurantes', 'calendario': 'Calendário', 'biblioteca': 'Biblioteca', 'percurso_academico': 'Percurso Académico', 'mapa': 'Mapa', 'faculdade': 'Faculdade', 'other': 'Outros'})}"; + static m3(title) => "${Intl.select(title, {'horario': 'Horário', 'exames': 'Exames', 'area': 'Área Pessoal', 'cadeiras': 'Cadeiras', 'autocarros': 'Autocarros', 'locais': 'Locais', 'restaurantes': 'Restaurantes', 'calendario': 'Calendário', 'biblioteca': 'Biblioteca', 'percurso_academico': 'Percurso Académico', 'mapa': 'Mapa', 'faculdade': 'Faculdade', 'other': 'Outros', })}"; - static m4(period) => - "${Intl.select(period, {'lunch': 'Almoço', 'dinner': 'Jantar', 'other': 'Other'})}"; + static m4(period) => "${Intl.select(period, {'lunch': 'Almoço', 'dinner': 'Jantar', 'other': 'Other', })}"; final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "about": MessageLookupByLibrary.simpleMessage("Sobre nós"), - "academic_services": MessageLookupByLibrary.simpleMessage( - "Serviços académicos", - ), - "accept": MessageLookupByLibrary.simpleMessage("Aceito"), - "account_card_title": MessageLookupByLibrary.simpleMessage( - "Conta Corrente", - ), - "add": MessageLookupByLibrary.simpleMessage("Adicionar"), - "add_photo": MessageLookupByLibrary.simpleMessage("Adicionar foto"), - "add_quota": MessageLookupByLibrary.simpleMessage("Adicionar quota"), - "add_restaurants": MessageLookupByLibrary.simpleMessage( - "Adicione restaurantes", - ), - "add_to_calendar": MessageLookupByLibrary.simpleMessage( - "Adicionar ao calendário", - ), - "add_widget": MessageLookupByLibrary.simpleMessage("Adicionar widget"), - "agree_terms": MessageLookupByLibrary.simpleMessage( - "Ao entrares confirmas que concordas com estes", - ), - "all": MessageLookupByLibrary.simpleMessage("Todos"), - "all_feminine": MessageLookupByLibrary.simpleMessage("Todas"), - "all_widgets_added": MessageLookupByLibrary.simpleMessage( - "Todos os widgets disponíveis já foram adicionados à tua área pessoal!", - ), - "apply": MessageLookupByLibrary.simpleMessage("Aplicar"), - "assessments": MessageLookupByLibrary.simpleMessage("Avaliações"), - "at_least_one_college": MessageLookupByLibrary.simpleMessage( - "Seleciona pelo menos uma faculdade", - ), - "available_amount": MessageLookupByLibrary.simpleMessage( - "Valor disponível", - ), - "available_elements": MessageLookupByLibrary.simpleMessage( - "Elementos disponíveis", - ), - "average": MessageLookupByLibrary.simpleMessage("Média"), - "balance": MessageLookupByLibrary.simpleMessage("Saldo"), - "banner_info": MessageLookupByLibrary.simpleMessage( - "Recolhemos dados anónimos de utilização para ajudar a melhorar a sua experiência. Pode desativar esta opção a qualquer momento nas definições", - ), - "bibliography": MessageLookupByLibrary.simpleMessage("Bibliografia"), - "breakfast": MessageLookupByLibrary.simpleMessage("Pequeno Almoço"), - "bs_description": MessageLookupByLibrary.simpleMessage( - "Encontraste algum bug na aplicação?\nTens alguma sugestão para a app?\nConta-nos para que possamos melhorar!", - ), - "bug_description": MessageLookupByLibrary.simpleMessage( - "Bug encontrado, como o reproduzir, etc", - ), - "bug_description_Suggestion": MessageLookupByLibrary.simpleMessage( - "Sugestão", - ), - "bug_description_error": MessageLookupByLibrary.simpleMessage("Erro"), - "bug_description_other": MessageLookupByLibrary.simpleMessage("Outro"), - "bug_description_unexpected_behaviour": - MessageLookupByLibrary.simpleMessage("Comportamento Inesperado"), - "bug_description_visual_detail": MessageLookupByLibrary.simpleMessage( - "Detalhe Visual", - ), - "bus_error": MessageLookupByLibrary.simpleMessage( - "Não foi possível obter informação", - ), - "bus_information": MessageLookupByLibrary.simpleMessage( - "Seleciona os autocarros dos quais queres informação:", - ), - "buses_personalize": MessageLookupByLibrary.simpleMessage( - "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.", - ), - "calendar": MessageLookupByLibrary.simpleMessage("Calendário"), - "cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), - "change": MessageLookupByLibrary.simpleMessage("Alterar"), - "change_password": MessageLookupByLibrary.simpleMessage( - "Alterar palavra-passe", - ), - "change_prompt": MessageLookupByLibrary.simpleMessage( - "Deseja alterar a palavra-passe?", - ), - "check_internet": MessageLookupByLibrary.simpleMessage( - "Verifica a tua ligação à internet", - ), - "class_registration": MessageLookupByLibrary.simpleMessage( - "Inscrição de Turmas", - ), - "collect_usage_stats": MessageLookupByLibrary.simpleMessage( - "Partilhar estatísticas de uso", - ), - "college": MessageLookupByLibrary.simpleMessage("Faculdade: "), - "college_select": MessageLookupByLibrary.simpleMessage( - "seleciona a(s) tua(s) faculdade(s)", - ), - "conclude": MessageLookupByLibrary.simpleMessage("Concluído"), - "configured_buses": MessageLookupByLibrary.simpleMessage( - "Autocarros Configurados", - ), - "confirm": MessageLookupByLibrary.simpleMessage("Confirmar"), - "confirm_logout": MessageLookupByLibrary.simpleMessage( - "Tens a certeza de que queres terminar sessão? Os teus dados locais serão apagados e terás de iniciar sessão novamente.", - ), - "consent": MessageLookupByLibrary.simpleMessage( - "Consinto que esta informação seja revista pelo NIAEFEUP, podendo ser eliminada a meu pedido.", - ), - "contact": MessageLookupByLibrary.simpleMessage("Contacto (opcional)"), - "copy_center": MessageLookupByLibrary.simpleMessage("Centro de cópias"), - "copy_center_building": MessageLookupByLibrary.simpleMessage( - "Piso -1 do edifício B | Edifício da AEFEUP", - ), - "courseRegent": MessageLookupByLibrary.simpleMessage("Regente da Cadeira"), - "course_class": MessageLookupByLibrary.simpleMessage("Turmas"), - "course_info": MessageLookupByLibrary.simpleMessage("Ficha"), - "courses": MessageLookupByLibrary.simpleMessage("Cursos"), - "current_state": MessageLookupByLibrary.simpleMessage("Estado atual: "), - "current_year": MessageLookupByLibrary.simpleMessage( - "Ano curricular atual: ", - ), - "decrement": MessageLookupByLibrary.simpleMessage("Decrementar 1,00€"), - "description": MessageLookupByLibrary.simpleMessage("Descrição"), - "desired_email": MessageLookupByLibrary.simpleMessage( - "Email em que desejas ser contactado", - ), - "dinner": MessageLookupByLibrary.simpleMessage("Jantar"), - "dish_type": m0, - "dish_types": MessageLookupByLibrary.simpleMessage("Tipos de Prato"), - "dona_bia": MessageLookupByLibrary.simpleMessage("Papelaria D. Beatriz"), - "dona_bia_building": MessageLookupByLibrary.simpleMessage( - "Piso -1 do edifício B (B-142)", - ), - "download_error": MessageLookupByLibrary.simpleMessage( - "Erro ao descarregar o ficheiro", - ), - "drag_and_drop": MessageLookupByLibrary.simpleMessage( - "Arrasta e solta os elementos", - ), - "ects": MessageLookupByLibrary.simpleMessage("ECTS realizados: "), - "edit_off": MessageLookupByLibrary.simpleMessage("Editar"), - "edit_on": MessageLookupByLibrary.simpleMessage("Concluir edição"), - "email": MessageLookupByLibrary.simpleMessage("Email"), - "empty_text": MessageLookupByLibrary.simpleMessage( - "Por favor preenche este campo", - ), - "evaluation": MessageLookupByLibrary.simpleMessage("Avaliação"), - "exams": MessageLookupByLibrary.simpleMessage("Exames"), - "exams_filter": MessageLookupByLibrary.simpleMessage( - "Definições Filtro de Exames", - ), - "exit_confirm": MessageLookupByLibrary.simpleMessage( - "Tem a certeza de que pretende sair?", - ), - "expired_password": MessageLookupByLibrary.simpleMessage( - "A tua palavra-passe expirou", - ), - "fail_to_authenticate": MessageLookupByLibrary.simpleMessage( - "Falha ao autenticar", - ), - "failed_login": MessageLookupByLibrary.simpleMessage("O login falhou"), - "failed_upload": MessageLookupByLibrary.simpleMessage( - "Falha de carregamento", - ), - "favorite_filter": MessageLookupByLibrary.simpleMessage("Favoritos"), - "fee_date": MessageLookupByLibrary.simpleMessage("Data limite"), - "fee_notification": MessageLookupByLibrary.simpleMessage( - "Data limite de propina", - ), - "feedback_description": MessageLookupByLibrary.simpleMessage( - "Reporta um problema ou sugere uma melhoria", - ), - "files": MessageLookupByLibrary.simpleMessage("Ficheiros"), - "first_year_registration": MessageLookupByLibrary.simpleMessage( - "Ano da primeira inscrição: ", - ), - "floor": MessageLookupByLibrary.simpleMessage("Piso"), - "floors": MessageLookupByLibrary.simpleMessage("Pisos"), - "forgot_password": MessageLookupByLibrary.simpleMessage( - "Esqueceu a palavra-passe?", - ), - "frequency": MessageLookupByLibrary.simpleMessage("Obtenção de Frequência"), - "generate_reference": MessageLookupByLibrary.simpleMessage( - "Gerar referência", - ), - "geral_registration": MessageLookupByLibrary.simpleMessage( - "Inscrição Geral", - ), - "goi": MessageLookupByLibrary.simpleMessage( - "Gabinete de Orientação e Integração", - ), - "improvement_registration": MessageLookupByLibrary.simpleMessage( - "Inscrição para Melhoria", - ), - "increment": MessageLookupByLibrary.simpleMessage("Incrementar 1,00€"), - "instructor": MessageLookupByLibrary.simpleMessage("Docente"), - "instructors": MessageLookupByLibrary.simpleMessage("Docentes"), - "internet_status_exception": MessageLookupByLibrary.simpleMessage( - "Verifique sua conexão com a internet", - ), - "invalid_credentials": MessageLookupByLibrary.simpleMessage( - "Credenciais inválidas", - ), - "keep_login": MessageLookupByLibrary.simpleMessage("Lembre-se de mim"), - "language": MessageLookupByLibrary.simpleMessage("Idioma"), - "last_refresh_time": m1, - "last_timestamp": m2, - "leave_feedback": MessageLookupByLibrary.simpleMessage("Feedback"), - "lectures": MessageLookupByLibrary.simpleMessage("Aulas"), - "library": MessageLookupByLibrary.simpleMessage("Biblioteca"), - "library_occupation": MessageLookupByLibrary.simpleMessage( - "Ocupação da Biblioteca", - ), - "load_error": MessageLookupByLibrary.simpleMessage( - "Erro ao carregar a informação", - ), - "loading_terms": MessageLookupByLibrary.simpleMessage( - "Carregando os Termos e Condições...", - ), - "location": MessageLookupByLibrary.simpleMessage("Localização"), - "login": MessageLookupByLibrary.simpleMessage("Entrar"), - "login_with_credentials": MessageLookupByLibrary.simpleMessage( - "Entrar com credenciais", - ), - "logout": MessageLookupByLibrary.simpleMessage("Terminar sessão"), - "lunch": MessageLookupByLibrary.simpleMessage("Almoço"), - "menus": MessageLookupByLibrary.simpleMessage("Ementas"), - "min_value_reference": MessageLookupByLibrary.simpleMessage( - "Valor mínimo: 1,00 €", - ), - "multimedia_center": MessageLookupByLibrary.simpleMessage( - "Centro de multimédia", - ), - "nav_title": m3, - "news": MessageLookupByLibrary.simpleMessage("Notícias"), - "no": MessageLookupByLibrary.simpleMessage("Não"), - "noExamsScheduled": MessageLookupByLibrary.simpleMessage( - "Não há exames agendados", - ), - "noInstructors": MessageLookupByLibrary.simpleMessage( - "Não há docentes atribuídos", - ), - "no_app": MessageLookupByLibrary.simpleMessage( - "Nenhuma aplicação encontrada para abrir o ficheiro", - ), - "no_bus": MessageLookupByLibrary.simpleMessage( - "Não percas nenhum autocarro!", - ), - "no_bus_stops": MessageLookupByLibrary.simpleMessage( - "Não existe nenhuma paragem configurada", - ), - "no_class": MessageLookupByLibrary.simpleMessage( - "Não existem turmas para apresentar", - ), - "no_classes": MessageLookupByLibrary.simpleMessage( - "Não existem aulas para apresentar", - ), - "no_classes_on": MessageLookupByLibrary.simpleMessage("Não possui aulas à"), - "no_classes_on_weekend": MessageLookupByLibrary.simpleMessage( - "Não possui aulas ao", - ), - "no_classes_this_week": MessageLookupByLibrary.simpleMessage( - "Não tens aulas esta semana", - ), - "no_college": MessageLookupByLibrary.simpleMessage("sem faculdade"), - "no_course_units": MessageLookupByLibrary.simpleMessage( - "Sem cadeiras no período selecionado", - ), - "no_courses": MessageLookupByLibrary.simpleMessage( - "Não foram encontrados cursos", - ), - "no_courses_description": MessageLookupByLibrary.simpleMessage( - "Tenta refrescar a página", - ), - "no_data": MessageLookupByLibrary.simpleMessage( - "Não há dados a mostrar neste momento", - ), - "no_date": MessageLookupByLibrary.simpleMessage("Sem data"), - "no_events": MessageLookupByLibrary.simpleMessage( - "Nenhum evento encontrado", - ), - "no_exams": MessageLookupByLibrary.simpleMessage( - "Não possui exames marcados", - ), - "no_exams_label": MessageLookupByLibrary.simpleMessage( - "Parece que estás de férias!", - ), - "no_favorite_restaurants": MessageLookupByLibrary.simpleMessage( - "Sem restaurantes favoritos abertos", - ), - "no_files": MessageLookupByLibrary.simpleMessage( - "Não possui ficheiros anexados", - ), - "no_files_found": MessageLookupByLibrary.simpleMessage( - "Nenhum ficheiro encontrado", - ), - "no_files_label": MessageLookupByLibrary.simpleMessage( - "Não tens nada para ver!", - ), - "no_info": MessageLookupByLibrary.simpleMessage( - "Não existem informações para apresentar", - ), - "no_internet": MessageLookupByLibrary.simpleMessage( - "Parece que estás offline", - ), - "no_library_info": MessageLookupByLibrary.simpleMessage( - "Sem informação de ocupação", - ), - "no_link": MessageLookupByLibrary.simpleMessage( - "Não conseguimos abrir o link", - ), - "no_menu_info": MessageLookupByLibrary.simpleMessage( - "Não há informação disponível sobre refeições", - ), - "no_menus": MessageLookupByLibrary.simpleMessage( - "Não há refeições disponíveis", - ), - "no_name_course": MessageLookupByLibrary.simpleMessage("Curso sem nome"), - "no_places_info": MessageLookupByLibrary.simpleMessage( - "Não há informação disponível sobre locais", - ), - "no_print_info": MessageLookupByLibrary.simpleMessage( - "Sem informação de saldo", - ), - "no_references": MessageLookupByLibrary.simpleMessage( - "Não existem referências a pagar", - ), - "no_results": MessageLookupByLibrary.simpleMessage("Sem resultados"), - "no_selected_courses": MessageLookupByLibrary.simpleMessage( - "Não existem cadeiras para apresentar", - ), - "no_selected_exams": MessageLookupByLibrary.simpleMessage( - "Não existem exames para apresentar", - ), - "no_trips": MessageLookupByLibrary.simpleMessage( - "Não há viagens planeadas de momento", - ), - "notifications": MessageLookupByLibrary.simpleMessage("Notificações"), - "now": MessageLookupByLibrary.simpleMessage("Agora"), - "occurrence_type": MessageLookupByLibrary.simpleMessage( - "Tipo de ocorrência", - ), - "of_month": MessageLookupByLibrary.simpleMessage("de"), - "open_error": MessageLookupByLibrary.simpleMessage( - "Erro ao abrir o ficheiro", - ), - "other_links": MessageLookupByLibrary.simpleMessage("Outros links"), - "pass_change_request": MessageLookupByLibrary.simpleMessage( - "Por razões de segurança, as palavras-passe têm de ser alteradas periodicamente.", - ), - "password": MessageLookupByLibrary.simpleMessage("Palavra-passe"), - "pendent_references": MessageLookupByLibrary.simpleMessage( - "Referências pendentes", - ), - "permission_denied": MessageLookupByLibrary.simpleMessage("Sem permissão"), - "personal_assistance": MessageLookupByLibrary.simpleMessage( - "Atendimento presencial", - ), - "press_again": MessageLookupByLibrary.simpleMessage( - "Pressione novamente para sair", - ), - "print": MessageLookupByLibrary.simpleMessage("Impressão"), - "print_balance": MessageLookupByLibrary.simpleMessage("Saldo impressões"), - "prints": MessageLookupByLibrary.simpleMessage("Impressões"), - "problem_id": MessageLookupByLibrary.simpleMessage( - "Breve identificação do problema", - ), - "program": MessageLookupByLibrary.simpleMessage("Programa"), - "reference_sigarra_help": MessageLookupByLibrary.simpleMessage( - "Os dados da referência gerada aparecerão no Sigarra, conta corrente. Perfil > Conta Corrente", - ), - "reference_success": MessageLookupByLibrary.simpleMessage( - "Referência criada com sucesso!", - ), - "reject": MessageLookupByLibrary.simpleMessage("Rejeito"), - "remaining_instructors": MessageLookupByLibrary.simpleMessage( - "Docentes Restantes", - ), - "remove": MessageLookupByLibrary.simpleMessage("Remover"), - "report_error": MessageLookupByLibrary.simpleMessage("Reportar erro"), - "restaurant_main_page": MessageLookupByLibrary.simpleMessage( - "Queres ver os teus restaurantes favoritos na página principal?", - ), - "restaurant_period": m4, - "restaurants": MessageLookupByLibrary.simpleMessage("Restaurantes"), - "room": MessageLookupByLibrary.simpleMessage("Sala"), - "save": MessageLookupByLibrary.simpleMessage("Guardar"), - "schedule": MessageLookupByLibrary.simpleMessage("Aulas"), - "school_calendar": MessageLookupByLibrary.simpleMessage( - "Calendário Escolar", - ), - "search": MessageLookupByLibrary.simpleMessage("Pesquisar"), - "see_more": MessageLookupByLibrary.simpleMessage("Ver mais"), - "select_all": MessageLookupByLibrary.simpleMessage("Selecionar Todos"), - "semester": MessageLookupByLibrary.simpleMessage("Semestre"), - "send": MessageLookupByLibrary.simpleMessage("Enviar"), - "sent_error": MessageLookupByLibrary.simpleMessage( - "Ocorreu um erro no envio", - ), - "services": MessageLookupByLibrary.simpleMessage("Serviços"), - "settings": MessageLookupByLibrary.simpleMessage("Definições"), - "snackbar": MessageLookupByLibrary.simpleMessage("Snackbar"), - "some_error": MessageLookupByLibrary.simpleMessage("Algum erro!"), - "stcp_stops": MessageLookupByLibrary.simpleMessage( - "STCP - Próximas Viagens", - ), - "student_number": MessageLookupByLibrary.simpleMessage( - "Número de Estudante", - ), - "success": MessageLookupByLibrary.simpleMessage("Enviado com sucesso"), - "successful_open": MessageLookupByLibrary.simpleMessage( - "Ficheiro aberto com sucesso", - ), - "tele_assistance": MessageLookupByLibrary.simpleMessage( - "Atendimento telefónico", - ), - "tele_personal_assistance": MessageLookupByLibrary.simpleMessage( - "Atendimento presencial e telefónico", - ), - "telephone": MessageLookupByLibrary.simpleMessage("Telefone"), - "terms": MessageLookupByLibrary.simpleMessage("Termos e Condições"), - "terms_change": MessageLookupByLibrary.simpleMessage( - "Mudança nos Termos e Condições da uni", - ), - "theme": MessageLookupByLibrary.simpleMessage("Tema"), - "title": MessageLookupByLibrary.simpleMessage("Título"), - "try_again": MessageLookupByLibrary.simpleMessage("Tentar de novo"), - "try_different_login": MessageLookupByLibrary.simpleMessage( - "Problemas ao iniciar sessão?", - ), - "uc_info": MessageLookupByLibrary.simpleMessage("Abrir página da UC"), - "ucs": MessageLookupByLibrary.simpleMessage("UCS"), - "unavailable": MessageLookupByLibrary.simpleMessage("Indisponível"), - "until": MessageLookupByLibrary.simpleMessage("Até"), - "valid_email": MessageLookupByLibrary.simpleMessage( - "Por favor insere um email válido", - ), - "view_course_details": MessageLookupByLibrary.simpleMessage( - "Ver detalhes da Unidade Curricular", - ), - "widget_prompt": MessageLookupByLibrary.simpleMessage( - "Escolhe um widget para adicionares à tua área pessoal:", - ), - "wrong_credentials_exception": MessageLookupByLibrary.simpleMessage( - "Credenciais inválidas", - ), - "year": MessageLookupByLibrary.simpleMessage("Ano"), - "yes": MessageLookupByLibrary.simpleMessage("Sim"), + static _notInlinedMessages(_) => { + "about" : MessageLookupByLibrary.simpleMessage("Sobre nós"), + "academic_services" : MessageLookupByLibrary.simpleMessage("Serviços académicos"), + "accept" : MessageLookupByLibrary.simpleMessage("Aceito"), + "account_card_title" : MessageLookupByLibrary.simpleMessage("Conta Corrente"), + "add" : MessageLookupByLibrary.simpleMessage("Adicionar"), + "add_photo" : MessageLookupByLibrary.simpleMessage("Adicionar foto"), + "add_quota" : MessageLookupByLibrary.simpleMessage("Adicionar quota"), + "add_restaurants" : MessageLookupByLibrary.simpleMessage("Adicione restaurantes"), + "add_to_calendar" : MessageLookupByLibrary.simpleMessage("Adicionar ao calendário"), + "add_widget" : MessageLookupByLibrary.simpleMessage("Adicionar widget"), + "agree_terms" : MessageLookupByLibrary.simpleMessage("Ao entrares confirmas que concordas com estes"), + "all" : MessageLookupByLibrary.simpleMessage("Todos"), + "all_feminine" : MessageLookupByLibrary.simpleMessage("Todas"), + "all_widgets_added" : MessageLookupByLibrary.simpleMessage("Todos os widgets disponíveis já foram adicionados à tua área pessoal!"), + "apply" : MessageLookupByLibrary.simpleMessage("Aplicar"), + "assessments" : MessageLookupByLibrary.simpleMessage("Avaliações"), + "at_least_one_college" : MessageLookupByLibrary.simpleMessage("Seleciona pelo menos uma faculdade"), + "available_amount" : MessageLookupByLibrary.simpleMessage("Valor disponível"), + "available_elements" : MessageLookupByLibrary.simpleMessage("Elementos disponíveis"), + "average" : MessageLookupByLibrary.simpleMessage("Média"), + "balance" : MessageLookupByLibrary.simpleMessage("Saldo"), + "banner_info" : MessageLookupByLibrary.simpleMessage("Recolhemos dados anónimos de utilização para ajudar a melhorar a sua experiência. Pode desativar esta opção a qualquer momento nas definições"), + "bibliography" : MessageLookupByLibrary.simpleMessage("Bibliografia"), + "breakfast" : MessageLookupByLibrary.simpleMessage("Pequeno Almoço"), + "bs_description" : MessageLookupByLibrary.simpleMessage("Encontraste algum bug na aplicação?\nTens alguma sugestão para a app?\nConta-nos para que possamos melhorar!"), + "bug_description" : MessageLookupByLibrary.simpleMessage("Bug encontrado, como o reproduzir, etc"), + "bug_description_Suggestion" : MessageLookupByLibrary.simpleMessage("Sugestão"), + "bug_description_error" : MessageLookupByLibrary.simpleMessage("Erro"), + "bug_description_other" : MessageLookupByLibrary.simpleMessage("Outro"), + "bug_description_unexpected_behaviour" : MessageLookupByLibrary.simpleMessage("Comportamento Inesperado"), + "bug_description_visual_detail" : MessageLookupByLibrary.simpleMessage("Detalhe Visual"), + "bus_error" : MessageLookupByLibrary.simpleMessage("Não foi possível obter informação"), + "bus_information" : MessageLookupByLibrary.simpleMessage("Seleciona os autocarros dos quais queres informação:"), + "buses_personalize" : MessageLookupByLibrary.simpleMessage("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."), + "calendar" : MessageLookupByLibrary.simpleMessage("Calendário"), + "cancel" : MessageLookupByLibrary.simpleMessage("Cancelar"), + "change" : MessageLookupByLibrary.simpleMessage("Alterar"), + "change_password" : MessageLookupByLibrary.simpleMessage("Alterar palavra-passe"), + "change_prompt" : MessageLookupByLibrary.simpleMessage("Deseja alterar a palavra-passe?"), + "check_internet" : MessageLookupByLibrary.simpleMessage("Verifica a tua ligação à internet"), + "class_registration" : MessageLookupByLibrary.simpleMessage("Inscrição de Turmas"), + "collect_usage_stats" : MessageLookupByLibrary.simpleMessage("Partilhar estatísticas de uso"), + "college" : MessageLookupByLibrary.simpleMessage("Faculdade: "), + "college_select" : MessageLookupByLibrary.simpleMessage("seleciona a(s) tua(s) faculdade(s)"), + "conclude" : MessageLookupByLibrary.simpleMessage("Concluído"), + "configured_buses" : MessageLookupByLibrary.simpleMessage("Autocarros Configurados"), + "confirm" : MessageLookupByLibrary.simpleMessage("Confirmar"), + "confirm_logout" : MessageLookupByLibrary.simpleMessage("Tens a certeza de que queres terminar sessão? Os teus dados locais serão apagados e terás de iniciar sessão novamente."), + "consent" : MessageLookupByLibrary.simpleMessage("Consinto que esta informação seja revista pelo NIAEFEUP, podendo ser eliminada a meu pedido."), + "contact" : MessageLookupByLibrary.simpleMessage("Contacto (opcional)"), + "copy_center" : MessageLookupByLibrary.simpleMessage("Centro de cópias"), + "copy_center_building" : MessageLookupByLibrary.simpleMessage("Piso -1 do edifício B | Edifício da AEFEUP"), + "courseRegent" : MessageLookupByLibrary.simpleMessage("Regente da Cadeira"), + "course_class" : MessageLookupByLibrary.simpleMessage("Turmas"), + "course_info" : MessageLookupByLibrary.simpleMessage("Ficha"), + "courses" : MessageLookupByLibrary.simpleMessage("Cursos"), + "current_state" : MessageLookupByLibrary.simpleMessage("Estado atual: "), + "current_year" : MessageLookupByLibrary.simpleMessage("Ano curricular atual: "), + "decrement" : MessageLookupByLibrary.simpleMessage("Decrementar 1,00€"), + "description" : MessageLookupByLibrary.simpleMessage("Descrição"), + "desired_email" : MessageLookupByLibrary.simpleMessage("Email em que desejas ser contactado"), + "dinner" : MessageLookupByLibrary.simpleMessage("Jantar"), + "dish_type" : m0, + "dish_types" : MessageLookupByLibrary.simpleMessage("Tipos de Prato"), + "dona_bia" : MessageLookupByLibrary.simpleMessage("Papelaria D. Beatriz"), + "dona_bia_building" : MessageLookupByLibrary.simpleMessage("Piso -1 do edifício B (B-142)"), + "download_error" : MessageLookupByLibrary.simpleMessage("Erro ao descarregar o ficheiro"), + "drag_and_drop" : MessageLookupByLibrary.simpleMessage("Arrasta e solta os elementos"), + "ects" : MessageLookupByLibrary.simpleMessage("ECTS realizados: "), + "edit_off" : MessageLookupByLibrary.simpleMessage("Editar"), + "edit_on" : MessageLookupByLibrary.simpleMessage("Concluir edição"), + "email" : MessageLookupByLibrary.simpleMessage("Email"), + "empty_text" : MessageLookupByLibrary.simpleMessage("Por favor preenche este campo"), + "evaluation" : MessageLookupByLibrary.simpleMessage("Avaliação"), + "exams" : MessageLookupByLibrary.simpleMessage("Exames"), + "exams_filter" : MessageLookupByLibrary.simpleMessage("Definições Filtro de Exames"), + "exams_intro_message" : MessageLookupByLibrary.simpleMessage("Mantém-te sempre atualizado com os teus exames"), + "exit_confirm" : MessageLookupByLibrary.simpleMessage("Tem a certeza de que pretende sair?"), + "expired_password" : MessageLookupByLibrary.simpleMessage("A tua palavra-passe expirou"), + "fail_to_authenticate" : MessageLookupByLibrary.simpleMessage("Falha ao autenticar"), + "failed_login" : MessageLookupByLibrary.simpleMessage("O login falhou"), + "failed_upload" : MessageLookupByLibrary.simpleMessage("Falha de carregamento"), + "favorite_filter" : MessageLookupByLibrary.simpleMessage("Favoritos"), + "fee_date" : MessageLookupByLibrary.simpleMessage("Data limite"), + "fee_notification" : MessageLookupByLibrary.simpleMessage("Data limite de propina"), + "feedback_description" : MessageLookupByLibrary.simpleMessage("Reporta um problema ou sugere uma melhoria"), + "files" : MessageLookupByLibrary.simpleMessage("Ficheiros"), + "first_year_registration" : MessageLookupByLibrary.simpleMessage("Ano da primeira inscrição: "), + "floor" : MessageLookupByLibrary.simpleMessage("Piso"), + "floors" : MessageLookupByLibrary.simpleMessage("Pisos"), + "forgot_password" : MessageLookupByLibrary.simpleMessage("Esqueceu a palavra-passe?"), + "frequency" : MessageLookupByLibrary.simpleMessage("Obtenção de Frequência"), + "generate_reference" : MessageLookupByLibrary.simpleMessage("Gerar referência"), + "geral_registration" : MessageLookupByLibrary.simpleMessage("Inscrição Geral"), + "goi" : MessageLookupByLibrary.simpleMessage("Gabinete de Orientação e Integração"), + "improvement_registration" : MessageLookupByLibrary.simpleMessage("Inscrição para Melhoria"), + "increment" : MessageLookupByLibrary.simpleMessage("Incrementar 1,00€"), + "instructor" : MessageLookupByLibrary.simpleMessage("Docente"), + "instructors" : MessageLookupByLibrary.simpleMessage("Docentes"), + "internet_status_exception" : MessageLookupByLibrary.simpleMessage("Verifique sua conexão com a internet"), + "invalid_credentials" : MessageLookupByLibrary.simpleMessage("Credenciais inválidas"), + "keep_login" : MessageLookupByLibrary.simpleMessage("Lembre-se de mim"), + "language" : MessageLookupByLibrary.simpleMessage("Idioma"), + "last_refresh_time" : m1, + "last_timestamp" : m2, + "leave_feedback" : MessageLookupByLibrary.simpleMessage("Feedback"), + "lectures" : MessageLookupByLibrary.simpleMessage("Aulas"), + "library" : MessageLookupByLibrary.simpleMessage("Biblioteca"), + "library_occupation" : MessageLookupByLibrary.simpleMessage("Ocupação da Biblioteca"), + "load_error" : MessageLookupByLibrary.simpleMessage("Erro ao carregar a informação"), + "loading_terms" : MessageLookupByLibrary.simpleMessage("Carregando os Termos e Condições..."), + "location" : MessageLookupByLibrary.simpleMessage("Localização"), + "login" : MessageLookupByLibrary.simpleMessage("Entrar"), + "login_with_credentials" : MessageLookupByLibrary.simpleMessage("Entrar com credenciais"), + "logout" : MessageLookupByLibrary.simpleMessage("Terminar sessão"), + "lunch" : MessageLookupByLibrary.simpleMessage("Almoço"), + "map" : MessageLookupByLibrary.simpleMessage("Mapa"), + "map_intro_message" : MessageLookupByLibrary.simpleMessage("Navega pelo campus com o nosso mapa interativo"), + "menus" : MessageLookupByLibrary.simpleMessage("Ementas"), + "min_value_reference" : MessageLookupByLibrary.simpleMessage("Valor mínimo: 1,00 €"), + "multimedia_center" : MessageLookupByLibrary.simpleMessage("Centro de multimédia"), + "nav_title" : m3, + "news" : MessageLookupByLibrary.simpleMessage("Notícias"), + "no" : MessageLookupByLibrary.simpleMessage("Não"), + "noExamsScheduled" : MessageLookupByLibrary.simpleMessage("Não há exames agendados"), + "noInstructors" : MessageLookupByLibrary.simpleMessage("Não há docentes atribuídos"), + "no_app" : MessageLookupByLibrary.simpleMessage("Nenhuma aplicação encontrada para abrir o ficheiro"), + "no_bus" : MessageLookupByLibrary.simpleMessage("Não percas nenhum autocarro!"), + "no_bus_stops" : MessageLookupByLibrary.simpleMessage("Não existe nenhuma paragem configurada"), + "no_class" : MessageLookupByLibrary.simpleMessage("Não existem turmas para apresentar"), + "no_classes" : MessageLookupByLibrary.simpleMessage("Não existem aulas para apresentar"), + "no_classes_on" : MessageLookupByLibrary.simpleMessage("Não possui aulas à"), + "no_classes_on_weekend" : MessageLookupByLibrary.simpleMessage("Não possui aulas ao"), + "no_classes_this_week" : MessageLookupByLibrary.simpleMessage("Não tens aulas esta semana"), + "no_college" : MessageLookupByLibrary.simpleMessage("sem faculdade"), + "no_course_units" : MessageLookupByLibrary.simpleMessage("Sem cadeiras no período selecionado"), + "no_courses" : MessageLookupByLibrary.simpleMessage("Não foram encontrados cursos"), + "no_courses_description" : MessageLookupByLibrary.simpleMessage("Tenta refrescar a página"), + "no_data" : MessageLookupByLibrary.simpleMessage("Não há dados a mostrar neste momento"), + "no_date" : MessageLookupByLibrary.simpleMessage("Sem data"), + "no_events" : MessageLookupByLibrary.simpleMessage("Nenhum evento encontrado"), + "no_exams" : MessageLookupByLibrary.simpleMessage("Não possui exames marcados"), + "no_exams_label" : MessageLookupByLibrary.simpleMessage("Parece que estás de férias!"), + "no_favorite_restaurants" : MessageLookupByLibrary.simpleMessage("Sem restaurantes favoritos abertos"), + "no_files" : MessageLookupByLibrary.simpleMessage("Não possui ficheiros anexados"), + "no_files_found" : MessageLookupByLibrary.simpleMessage("Nenhum ficheiro encontrado"), + "no_files_label" : MessageLookupByLibrary.simpleMessage("Não tens nada para ver!"), + "no_info" : MessageLookupByLibrary.simpleMessage("Não existem informações para apresentar"), + "no_internet" : MessageLookupByLibrary.simpleMessage("Parece que estás offline"), + "no_library_info" : MessageLookupByLibrary.simpleMessage("Sem informação de ocupação"), + "no_link" : MessageLookupByLibrary.simpleMessage("Não conseguimos abrir o link"), + "no_menu_info" : MessageLookupByLibrary.simpleMessage("Não há informação disponível sobre refeições"), + "no_menus" : MessageLookupByLibrary.simpleMessage("Não há refeições disponíveis"), + "no_name_course" : MessageLookupByLibrary.simpleMessage("Curso sem nome"), + "no_places_info" : MessageLookupByLibrary.simpleMessage("Não há informação disponível sobre locais"), + "no_print_info" : MessageLookupByLibrary.simpleMessage("Sem informação de saldo"), + "no_references" : MessageLookupByLibrary.simpleMessage("Não existem referências a pagar"), + "no_results" : MessageLookupByLibrary.simpleMessage("Sem resultados"), + "no_selected_courses" : MessageLookupByLibrary.simpleMessage("Não existem cadeiras para apresentar"), + "no_selected_exams" : MessageLookupByLibrary.simpleMessage("Não existem exames para apresentar"), + "no_trips" : MessageLookupByLibrary.simpleMessage("Não há viagens planeadas de momento"), + "notifications" : MessageLookupByLibrary.simpleMessage("Notificações"), + "notifications_intro_message" : MessageLookupByLibrary.simpleMessage("Queres receber alertas de eventos e informações importantes, incluindo o prazo limite de propinas?"), + "now" : MessageLookupByLibrary.simpleMessage("Agora"), + "occurrence_type" : MessageLookupByLibrary.simpleMessage("Tipo de ocorrência"), + "of_month" : MessageLookupByLibrary.simpleMessage("de"), + "open_error" : MessageLookupByLibrary.simpleMessage("Erro ao abrir o ficheiro"), + "other_links" : MessageLookupByLibrary.simpleMessage("Outros links"), + "pass_change_request" : MessageLookupByLibrary.simpleMessage("Por razões de segurança, as palavras-passe têm de ser alteradas periodicamente."), + "password" : MessageLookupByLibrary.simpleMessage("Palavra-passe"), + "pendent_references" : MessageLookupByLibrary.simpleMessage("Referências pendentes"), + "permission_denied" : MessageLookupByLibrary.simpleMessage("Sem permissão"), + "personal_assistance" : MessageLookupByLibrary.simpleMessage("Atendimento presencial"), + "press_again" : MessageLookupByLibrary.simpleMessage("Pressione novamente para sair"), + "print" : MessageLookupByLibrary.simpleMessage("Impressão"), + "print_balance" : MessageLookupByLibrary.simpleMessage("Saldo impressões"), + "prints" : MessageLookupByLibrary.simpleMessage("Impressões"), + "problem_id" : MessageLookupByLibrary.simpleMessage("Breve identificação do problema"), + "program" : MessageLookupByLibrary.simpleMessage("Programa"), + "reference_sigarra_help" : MessageLookupByLibrary.simpleMessage("Os dados da referência gerada aparecerão no Sigarra, conta corrente. Perfil > Conta Corrente"), + "reference_success" : MessageLookupByLibrary.simpleMessage("Referência criada com sucesso!"), + "reject" : MessageLookupByLibrary.simpleMessage("Rejeito"), + "remaining_instructors" : MessageLookupByLibrary.simpleMessage("Docentes Restantes"), + "remove" : MessageLookupByLibrary.simpleMessage("Remover"), + "report_error" : MessageLookupByLibrary.simpleMessage("Reportar erro"), + "restaurant_main_page" : MessageLookupByLibrary.simpleMessage("Queres ver os teus restaurantes favoritos na página principal?"), + "restaurant_period" : m4, + "restaurants" : MessageLookupByLibrary.simpleMessage("Restaurantes"), + "restaurants_intro_message" : MessageLookupByLibrary.simpleMessage("Descobre as opções de restauração do campus e os menus"), + "room" : MessageLookupByLibrary.simpleMessage("Sala"), + "save" : MessageLookupByLibrary.simpleMessage("Guardar"), + "schedule" : MessageLookupByLibrary.simpleMessage("Aulas"), + "schedule_intro_message" : MessageLookupByLibrary.simpleMessage("Mantém o controlo das tuas aulas e atividades diárias"), + "school_calendar" : MessageLookupByLibrary.simpleMessage("Calendário Escolar"), + "search" : MessageLookupByLibrary.simpleMessage("Pesquisar"), + "see_more" : MessageLookupByLibrary.simpleMessage("Ver mais"), + "select_all" : MessageLookupByLibrary.simpleMessage("Selecionar Todos"), + "semester" : MessageLookupByLibrary.simpleMessage("Semestre"), + "send" : MessageLookupByLibrary.simpleMessage("Enviar"), + "sent_error" : MessageLookupByLibrary.simpleMessage("Ocorreu um erro no envio"), + "services" : MessageLookupByLibrary.simpleMessage("Serviços"), + "services_intro_message" : MessageLookupByLibrary.simpleMessage("Explora os serviços académicos disponíveis para ti"), + "settings" : MessageLookupByLibrary.simpleMessage("Definições"), + "snackbar" : MessageLookupByLibrary.simpleMessage("Snackbar"), + "some_error" : MessageLookupByLibrary.simpleMessage("Algum erro!"), + "stcp_stops" : MessageLookupByLibrary.simpleMessage("STCP - Próximas Viagens"), + "student_number" : MessageLookupByLibrary.simpleMessage("Número de Estudante"), + "success" : MessageLookupByLibrary.simpleMessage("Enviado com sucesso"), + "successful_open" : MessageLookupByLibrary.simpleMessage("Ficheiro aberto com sucesso"), + "tele_assistance" : MessageLookupByLibrary.simpleMessage("Atendimento telefónico"), + "tele_personal_assistance" : MessageLookupByLibrary.simpleMessage("Atendimento presencial e telefónico"), + "telephone" : MessageLookupByLibrary.simpleMessage("Telefone"), + "terms" : MessageLookupByLibrary.simpleMessage("Termos e Condições"), + "terms_change" : MessageLookupByLibrary.simpleMessage("Mudança nos Termos e Condições da uni"), + "theme" : MessageLookupByLibrary.simpleMessage("Tema"), + "title" : MessageLookupByLibrary.simpleMessage("Título"), + "try_again" : MessageLookupByLibrary.simpleMessage("Tentar de novo"), + "try_different_login" : MessageLookupByLibrary.simpleMessage("Problemas ao iniciar sessão?"), + "uc_info" : MessageLookupByLibrary.simpleMessage("Abrir página da UC"), + "ucs" : MessageLookupByLibrary.simpleMessage("UCS"), + "unavailable" : MessageLookupByLibrary.simpleMessage("Indisponível"), + "until" : MessageLookupByLibrary.simpleMessage("Até"), + "valid_email" : MessageLookupByLibrary.simpleMessage("Por favor insere um email válido"), + "view_course_details" : MessageLookupByLibrary.simpleMessage("Ver detalhes da Unidade Curricular"), + "widget_prompt" : MessageLookupByLibrary.simpleMessage("Escolhe um widget para adicionares à tua área pessoal:"), + "wrong_credentials_exception" : MessageLookupByLibrary.simpleMessage("Credenciais inválidas"), + "year" : MessageLookupByLibrary.simpleMessage("Ano"), + "yes" : MessageLookupByLibrary.simpleMessage("Sim") }; } diff --git a/packages/uni_app/lib/generated/l10n.dart b/packages/uni_app/lib/generated/l10n.dart index d713a336e..768c7b8d0 100644 --- a/packages/uni_app/lib/generated/l10n.dart +++ b/packages/uni_app/lib/generated/l10n.dart @@ -18,36 +18,28 @@ class S { static S? _current; static S get current { - assert( - _current != null, - 'No instance of S was loaded. Try to initialize the S delegate before accessing S.current.', - ); + assert(_current != null, 'No instance of S was loaded. Try to initialize the S delegate before accessing S.current.'); return _current!; } - static const AppLocalizationDelegate delegate = AppLocalizationDelegate(); + static const AppLocalizationDelegate delegate = + AppLocalizationDelegate(); static Future load(Locale locale) { - final name = - (locale.countryCode?.isEmpty ?? false) - ? locale.languageCode - : locale.toString(); - final localeName = Intl.canonicalizedLocale(name); + final name = (locale.countryCode?.isEmpty ?? false) ? locale.languageCode : locale.toString(); + final localeName = Intl.canonicalizedLocale(name); return initializeMessages(localeName).then((_) { Intl.defaultLocale = localeName; final instance = S(); S._current = instance; - + return instance; }); - } + } static S of(BuildContext context) { final instance = S.maybeOf(context); - assert( - instance != null, - 'No instance of S present in the widget tree. Did you add S.delegate in localizationsDelegates?', - ); + assert(instance != null, 'No instance of S present in the widget tree. Did you add S.delegate in localizationsDelegates?'); return instance!; } @@ -67,27 +59,52 @@ class S { /// `No` String get no { - return Intl.message('No', name: 'no', desc: '', args: []); + return Intl.message( + 'No', + name: 'no', + desc: '', + args: [], + ); } /// `Yes` String get yes { - return Intl.message('Yes', name: 'yes', desc: '', args: []); + return Intl.message( + 'Yes', + name: 'yes', + desc: '', + args: [], + ); } /// `About us` String get about { - return Intl.message('About us', name: 'about', desc: '', args: []); + return Intl.message( + 'About us', + name: 'about', + desc: '', + args: [], + ); } /// `Language` String get language { - return Intl.message('Language', name: 'language', desc: '', args: []); + return Intl.message( + 'Language', + name: 'language', + desc: '', + args: [], + ); } /// `Theme` String get theme { - return Intl.message('Theme', name: 'theme', desc: '', args: []); + return Intl.message( + 'Theme', + name: 'theme', + desc: '', + args: [], + ); } /// `Notifications` @@ -112,7 +129,12 @@ class S { /// `Accept` String get accept { - return Intl.message('Accept', name: 'accept', desc: '', args: []); + return Intl.message( + 'Accept', + name: 'accept', + desc: '', + args: [], + ); } /// `Checking account` @@ -127,17 +149,32 @@ class S { /// `Add` String get add { - return Intl.message('Add', name: 'add', desc: '', args: []); + return Intl.message( + 'Add', + name: 'add', + desc: '', + args: [], + ); } /// `Add quota` String get add_quota { - return Intl.message('Add quota', name: 'add_quota', desc: '', args: []); + return Intl.message( + 'Add quota', + name: 'add_quota', + desc: '', + args: [], + ); } /// `Add widget` String get add_widget { - return Intl.message('Add widget', name: 'add_widget', desc: '', args: []); + return Intl.message( + 'Add widget', + name: 'add_widget', + desc: '', + args: [], + ); } /// `Add restaurants` @@ -192,7 +229,12 @@ class S { /// `Average` String get average { - return Intl.message('Average', name: 'average', desc: '', args: []); + return Intl.message( + 'Average', + name: 'average', + desc: '', + args: [], + ); } /// `We collect anonymous usage data to help improve your experience. You can opt out anytime in the settings.` @@ -207,7 +249,12 @@ class S { /// `Balance` String get balance { - return Intl.message('Balance', name: 'balance', desc: '', args: []); + return Intl.message( + 'Balance', + name: 'balance', + desc: '', + args: [], + ); } /// `Bibliography` @@ -222,7 +269,12 @@ class S { /// `Breakfast` String get breakfast { - return Intl.message('Breakfast', name: 'breakfast', desc: '', args: []); + return Intl.message( + 'Breakfast', + name: 'breakfast', + desc: '', + args: [], + ); } /// `Did you find any bugs in the application?\nDo you have any suggestions for the app?\nTell us so we can improve!` @@ -287,17 +339,32 @@ class S { /// `Cancel` String get cancel { - return Intl.message('Cancel', name: 'cancel', desc: '', args: []); + return Intl.message( + 'Cancel', + name: 'cancel', + desc: '', + args: [], + ); } /// `Apply` String get apply { - return Intl.message('Apply', name: 'apply', desc: '', args: []); + return Intl.message( + 'Apply', + name: 'apply', + desc: '', + args: [], + ); } /// `Change` String get change { - return Intl.message('Change', name: 'change', desc: '', args: []); + return Intl.message( + 'Change', + name: 'change', + desc: '', + args: [], + ); } /// `Change password` @@ -332,7 +399,12 @@ class S { /// `Classes` String get course_class { - return Intl.message('Classes', name: 'course_class', desc: '', args: []); + return Intl.message( + 'Classes', + name: 'course_class', + desc: '', + args: [], + ); } /// `Class Registration` @@ -347,7 +419,12 @@ class S { /// `College: ` String get college { - return Intl.message('College: ', name: 'college', desc: '', args: []); + return Intl.message( + 'College: ', + name: 'college', + desc: '', + args: [], + ); } /// `select your college(s)` @@ -362,7 +439,12 @@ class S { /// `Done` String get conclude { - return Intl.message('Done', name: 'conclude', desc: '', args: []); + return Intl.message( + 'Done', + name: 'conclude', + desc: '', + args: [], + ); } /// `Configured Buses` @@ -377,7 +459,12 @@ class S { /// `Confirm` String get confirm { - return Intl.message('Confirm', name: 'confirm', desc: '', args: []); + return Intl.message( + 'Confirm', + name: 'confirm', + desc: '', + args: [], + ); } /// `I consent to this information being reviewed by NIAEFEUP and may be deleted at my request.` @@ -402,7 +489,12 @@ class S { /// `Copy center` String get copy_center { - return Intl.message('Copy center', name: 'copy_center', desc: '', args: []); + return Intl.message( + 'Copy center', + name: 'copy_center', + desc: '', + args: [], + ); } /// `Floor -1 of building B | AEFEUP building` @@ -417,7 +509,12 @@ class S { /// `Info` String get course_info { - return Intl.message('Info', name: 'course_info', desc: '', args: []); + return Intl.message( + 'Info', + name: 'course_info', + desc: '', + args: [], + ); } /// `Current state: ` @@ -452,7 +549,12 @@ class S { /// `Description` String get description { - return Intl.message('Description', name: 'description', desc: '', args: []); + return Intl.message( + 'Description', + name: 'description', + desc: '', + args: [], + ); } /// `Email where you want to be contacted` @@ -467,7 +569,12 @@ class S { /// `Dinner` String get dinner { - return Intl.message('Dinner', name: 'dinner', desc: '', args: []); + return Intl.message( + 'Dinner', + name: 'dinner', + desc: '', + args: [], + ); } /// `D. Beatriz's stationery store` @@ -492,17 +599,32 @@ class S { /// `ECTS performed: ` String get ects { - return Intl.message('ECTS performed: ', name: 'ects', desc: '', args: []); + return Intl.message( + 'ECTS performed: ', + name: 'ects', + desc: '', + args: [], + ); } /// `Edit` String get edit_off { - return Intl.message('Edit', name: 'edit_off', desc: '', args: []); + return Intl.message( + 'Edit', + name: 'edit_off', + desc: '', + args: [], + ); } /// `Finish editing` String get edit_on { - return Intl.message('Finish editing', name: 'edit_on', desc: '', args: []); + return Intl.message( + 'Finish editing', + name: 'edit_on', + desc: '', + args: [], + ); } /// `Please fill in this field` @@ -517,7 +639,12 @@ class S { /// `Evaluation` String get evaluation { - return Intl.message('Evaluation', name: 'evaluation', desc: '', args: []); + return Intl.message( + 'Evaluation', + name: 'evaluation', + desc: '', + args: [], + ); } /// `Eligibility for exams` @@ -562,7 +689,12 @@ class S { /// `Deadline` String get fee_date { - return Intl.message('Deadline', name: 'fee_date', desc: '', args: []); + return Intl.message( + 'Deadline', + name: 'fee_date', + desc: '', + args: [], + ); } /// `Fee deadline` @@ -597,12 +729,22 @@ class S { /// `Floor` String get floor { - return Intl.message('Floor', name: 'floor', desc: '', args: []); + return Intl.message( + 'Floor', + name: 'floor', + desc: '', + args: [], + ); } /// `Floors` String get floors { - return Intl.message('Floors', name: 'floors', desc: '', args: []); + return Intl.message( + 'Floors', + name: 'floors', + desc: '', + args: [], + ); } /// `Forgot password?` @@ -667,7 +809,12 @@ class S { /// `Remember me` String get keep_login { - return Intl.message('Remember me', name: 'keep_login', desc: '', args: []); + return Intl.message( + 'Remember me', + name: 'keep_login', + desc: '', + args: [], + ); } /// `last refresh at {time}` @@ -715,7 +862,12 @@ class S { /// `Lunch` String get lunch { - return Intl.message('Lunch', name: 'lunch', desc: '', args: []); + return Intl.message( + 'Lunch', + name: 'lunch', + desc: '', + args: [], + ); } /// `Error downloading the file` @@ -740,27 +892,52 @@ class S { /// `Login` String get login { - return Intl.message('Login', name: 'login', desc: '', args: []); + return Intl.message( + 'Login', + name: 'login', + desc: '', + args: [], + ); } /// `Settings` String get settings { - return Intl.message('Settings', name: 'settings', desc: '', args: []); + return Intl.message( + 'Settings', + name: 'settings', + desc: '', + args: [], + ); } /// `Snackbar` String get snackbar { - return Intl.message('Snackbar', name: 'snackbar', desc: '', args: []); + return Intl.message( + 'Snackbar', + name: 'snackbar', + desc: '', + args: [], + ); } /// `Log out` String get logout { - return Intl.message('Log out', name: 'logout', desc: '', args: []); + return Intl.message( + 'Log out', + name: 'logout', + desc: '', + args: [], + ); } /// `Menus` String get menus { - return Intl.message('Menus', name: 'menus', desc: '', args: []); + return Intl.message( + 'Menus', + name: 'menus', + desc: '', + args: [], + ); } /// `Minimum value: 1,00 €` @@ -810,7 +987,12 @@ class S { /// `News` String get news { - return Intl.message('News', name: 'news', desc: '', args: []); + return Intl.message( + 'News', + name: 'news', + desc: '', + args: [], + ); } /// `Don't miss any bus!` @@ -885,7 +1067,12 @@ class S { /// `no college` String get no_college { - return Intl.message('no college', name: 'no_college', desc: '', args: []); + return Intl.message( + 'no college', + name: 'no_college', + desc: '', + args: [], + ); } /// `No course units in the selected period` @@ -910,7 +1097,12 @@ class S { /// `No date` String get no_date { - return Intl.message('No date', name: 'no_date', desc: '', args: []); + return Intl.message( + 'No date', + name: 'no_date', + desc: '', + args: [], + ); } /// `No events found` @@ -1035,7 +1227,12 @@ class S { /// `No match` String get no_results { - return Intl.message('No match', name: 'no_results', desc: '', args: []); + return Intl.message( + 'No match', + name: 'no_results', + desc: '', + args: [], + ); } /// `There are no course units to display` @@ -1090,7 +1287,12 @@ class S { /// `of` String get of_month { - return Intl.message('of', name: 'of_month', desc: '', args: []); + return Intl.message( + 'of', + name: 'of_month', + desc: '', + args: [], + ); } /// `We couldn't open the link` @@ -1135,7 +1337,12 @@ class S { /// `Other links` String get other_links { - return Intl.message('Other links', name: 'other_links', desc: '', args: []); + return Intl.message( + 'Other links', + name: 'other_links', + desc: '', + args: [], + ); } /// `For security reasons, passwords must be changed periodically.` @@ -1150,7 +1357,12 @@ class S { /// `Password` String get password { - return Intl.message('Password', name: 'password', desc: '', args: []); + return Intl.message( + 'Password', + name: 'password', + desc: '', + args: [], + ); } /// `Pending references` @@ -1185,7 +1397,12 @@ class S { /// `Print` String get print { - return Intl.message('Print', name: 'print', desc: '', args: []); + return Intl.message( + 'Print', + name: 'print', + desc: '', + args: [], + ); } /// `Print balance` @@ -1220,7 +1437,12 @@ class S { /// `Program` String get program { - return Intl.message('Program', name: 'program', desc: '', args: []); + return Intl.message( + 'Program', + name: 'program', + desc: '', + args: [], + ); } /// `Error opening the file` @@ -1255,7 +1477,12 @@ class S { /// `Prints` String get prints { - return Intl.message('Prints', name: 'prints', desc: '', args: []); + return Intl.message( + 'Prints', + name: 'prints', + desc: '', + args: [], + ); } /// `Brief identification of the problem` @@ -1290,12 +1517,22 @@ class S { /// `Reject` String get reject { - return Intl.message('Reject', name: 'reject', desc: '', args: []); + return Intl.message( + 'Reject', + name: 'reject', + desc: '', + args: [], + ); } /// `Delete` String get remove { - return Intl.message('Delete', name: 'remove', desc: '', args: []); + return Intl.message( + 'Delete', + name: 'remove', + desc: '', + args: [], + ); } /// `Report error` @@ -1320,12 +1557,22 @@ class S { /// `Room` String get room { - return Intl.message('Room', name: 'room', desc: '', args: []); + return Intl.message( + 'Room', + name: 'room', + desc: '', + args: [], + ); } /// `Files` String get files { - return Intl.message('Files', name: 'files', desc: '', args: []); + return Intl.message( + 'Files', + name: 'files', + desc: '', + args: [], + ); } /// `School Calendar` @@ -1340,12 +1587,22 @@ class S { /// `Semester` String get semester { - return Intl.message('Semester', name: 'semester', desc: '', args: []); + return Intl.message( + 'Semester', + name: 'semester', + desc: '', + args: [], + ); } /// `Send` String get send { - return Intl.message('Send', name: 'send', desc: '', args: []); + return Intl.message( + 'Send', + name: 'send', + desc: '', + args: [], + ); } /// `An error occurred in sending` @@ -1360,7 +1617,12 @@ class S { /// `Some error!` String get some_error { - return Intl.message('Some error!', name: 'some_error', desc: '', args: []); + return Intl.message( + 'Some error!', + name: 'some_error', + desc: '', + args: [], + ); } /// `STCP - Upcoming Trips` @@ -1415,7 +1677,12 @@ class S { /// `Telephone` String get telephone { - return Intl.message('Telephone', name: 'telephone', desc: '', args: []); + return Intl.message( + 'Telephone', + name: 'telephone', + desc: '', + args: [], + ); } /// `Terms and Conditions` @@ -1440,17 +1707,32 @@ class S { /// `Title` String get title { - return Intl.message('Title', name: 'title', desc: '', args: []); + return Intl.message( + 'Title', + name: 'title', + desc: '', + args: [], + ); } /// `Open UC page` String get uc_info { - return Intl.message('Open UC page', name: 'uc_info', desc: '', args: []); + return Intl.message( + 'Open UC page', + name: 'uc_info', + desc: '', + args: [], + ); } /// `Unavailable` String get unavailable { - return Intl.message('Unavailable', name: 'unavailable', desc: '', args: []); + return Intl.message( + 'Unavailable', + name: 'unavailable', + desc: '', + args: [], + ); } /// `Please enter a valid email` @@ -1475,17 +1757,32 @@ class S { /// `Year` String get year { - return Intl.message('Year', name: 'year', desc: '', args: []); + return Intl.message( + 'Year', + name: 'year', + desc: '', + args: [], + ); } /// `See more` String get see_more { - return Intl.message('See more', name: 'see_more', desc: '', args: []); + return Intl.message( + 'See more', + name: 'see_more', + desc: '', + args: [], + ); } /// `Search` String get search { - return Intl.message('Search', name: 'search', desc: '', args: []); + return Intl.message( + 'Search', + name: 'search', + desc: '', + args: [], + ); } /// `Do you really want to log out? Your local data will be deleted and you will have to log in again.` @@ -1510,7 +1807,12 @@ class S { /// `Try again` String get try_again { - return Intl.message('Try again', name: 'try_again', desc: '', args: []); + return Intl.message( + 'Try again', + name: 'try_again', + desc: '', + args: [], + ); } /// `Having trouble signing in?` @@ -1615,7 +1917,12 @@ class S { /// `Add photo` String get add_photo { - return Intl.message('Add photo', name: 'add_photo', desc: '', args: []); + return Intl.message( + 'Add photo', + name: 'add_photo', + desc: '', + args: [], + ); } /// `Failed to upload` @@ -1630,12 +1937,22 @@ class S { /// `Schedule` String get schedule { - return Intl.message('Schedule', name: 'schedule', desc: '', args: []); + return Intl.message( + 'Schedule', + name: 'schedule', + desc: '', + args: [], + ); } /// `Instructors` String get instructors { - return Intl.message('Instructors', name: 'instructors', desc: '', args: []); + return Intl.message( + 'Instructors', + name: 'instructors', + desc: '', + args: [], + ); } /// `Remaining Instructors` @@ -1650,7 +1967,12 @@ class S { /// `Assessments` String get assessments { - return Intl.message('Assessments', name: 'assessments', desc: '', args: []); + return Intl.message( + 'Assessments', + name: 'assessments', + desc: '', + args: [], + ); } /// `No exams scheduled` @@ -1685,27 +2007,52 @@ class S { /// `Instructor` String get instructor { - return Intl.message('Instructor', name: 'instructor', desc: '', args: []); + return Intl.message( + 'Instructor', + name: 'instructor', + desc: '', + args: [], + ); } /// `Lectures` String get lectures { - return Intl.message('Lectures', name: 'lectures', desc: '', args: []); + return Intl.message( + 'Lectures', + name: 'lectures', + desc: '', + args: [], + ); } /// `Exams` String get exams { - return Intl.message('Exams', name: 'exams', desc: '', args: []); + return Intl.message( + 'Exams', + name: 'exams', + desc: '', + args: [], + ); } /// `Courses` String get courses { - return Intl.message('Courses', name: 'courses', desc: '', args: []); + return Intl.message( + 'Courses', + name: 'courses', + desc: '', + args: [], + ); } /// `All` String get all_feminine { - return Intl.message('All', name: 'all_feminine', desc: '', args: []); + return Intl.message( + 'All', + name: 'all_feminine', + desc: '', + args: [], + ); } /// `{type, select, all_dishes{All dishes} meat_dishes{Meat dishes} fish_dishes{Fish dishes} vegetarian_dishes{Vegetarian dishes} soups{Soups} salads{Salads} diet_dishes{Diet dishes} dishes_of_the_day{Dishes of the Day} closed{Closed} other{Other}}` @@ -1732,12 +2079,22 @@ class S { /// `Dish Types` String get dish_types { - return Intl.message('Dish Types', name: 'dish_types', desc: '', args: []); + return Intl.message( + 'Dish Types', + name: 'dish_types', + desc: '', + args: [], + ); } /// `Select All` String get select_all { - return Intl.message('Select All', name: 'select_all', desc: '', args: []); + return Intl.message( + 'Select All', + name: 'select_all', + desc: '', + args: [], + ); } /// `Favorites` @@ -1754,7 +2111,11 @@ class S { String restaurant_period(Object period) { return Intl.select( period, - {'lunch': 'Lunch', 'dinner': 'Dinner', 'other': 'Other'}, + { + 'lunch': 'Lunch', + 'dinner': 'Dinner', + 'other': 'Other', + }, name: 'restaurant_period', desc: '', args: [period], @@ -1783,12 +2144,22 @@ class S { /// `Now` String get now { - return Intl.message('Now', name: 'now', desc: '', args: []); + return Intl.message( + 'Now', + name: 'now', + desc: '', + args: [], + ); } /// `All` String get all { - return Intl.message('All', name: 'all', desc: '', args: []); + return Intl.message( + 'All', + name: 'all', + desc: '', + args: [], + ); } /// `Drag and drop elements` @@ -1813,37 +2184,72 @@ class S { /// `Library` String get library { - return Intl.message('Library', name: 'library', desc: '', args: []); + return Intl.message( + 'Library', + name: 'library', + desc: '', + args: [], + ); } /// `Restaurants` String get restaurants { - return Intl.message('Restaurants', name: 'restaurants', desc: '', args: []); + return Intl.message( + 'Restaurants', + name: 'restaurants', + desc: '', + args: [], + ); } /// `Calendar` String get calendar { - return Intl.message('Calendar', name: 'calendar', desc: '', args: []); + return Intl.message( + 'Calendar', + name: 'calendar', + desc: '', + args: [], + ); } /// `UCS` String get ucs { - return Intl.message('UCS', name: 'ucs', desc: '', args: []); + return Intl.message( + 'UCS', + name: 'ucs', + desc: '', + args: [], + ); } /// `Save` String get save { - return Intl.message('Save', name: 'save', desc: '', args: []); + return Intl.message( + 'Save', + name: 'save', + desc: '', + args: [], + ); } /// `Location` String get location { - return Intl.message('Location', name: 'location', desc: '', args: []); + return Intl.message( + 'Location', + name: 'location', + desc: '', + args: [], + ); } /// `Email` String get email { - return Intl.message('Email', name: 'email', desc: '', args: []); + return Intl.message( + 'Email', + name: 'email', + desc: '', + args: [], + ); } /// `Add to calendar` @@ -1868,12 +2274,22 @@ class S { /// `Until` String get until { - return Intl.message('Until', name: 'until', desc: '', args: []); + return Intl.message( + 'Until', + name: 'until', + desc: '', + args: [], + ); } /// `Services` String get services { - return Intl.message('Services', name: 'services', desc: '', args: []); + return Intl.message( + 'Services', + name: 'services', + desc: '', + args: [], + ); } /// `Orientation and Integration Office` @@ -1885,6 +2301,76 @@ class S { args: [], ); } + + /// `Map` + String get map { + return Intl.message( + 'Map', + name: 'map', + desc: '', + args: [], + ); + } + + /// `Stay always updated with your exams` + String get exams_intro_message { + return Intl.message( + 'Stay always updated with your exams', + name: 'exams_intro_message', + desc: '', + args: [], + ); + } + + /// `Keep track of your daily classes and activities` + String get schedule_intro_message { + return Intl.message( + 'Keep track of your daily classes and activities', + name: 'schedule_intro_message', + desc: '', + args: [], + ); + } + + /// `Discover campus dining options and menus` + String get restaurants_intro_message { + return Intl.message( + 'Discover campus dining options and menus', + name: 'restaurants_intro_message', + desc: '', + args: [], + ); + } + + /// `Access various campus services at your fingertips` + String get services_intro_message { + return Intl.message( + 'Access various campus services at your fingertips', + name: 'services_intro_message', + desc: '', + args: [], + ); + } + + /// `Explore the campus with our interactive map` + String get map_intro_message { + return Intl.message( + 'Explore the campus with our interactive map', + name: 'map_intro_message', + desc: '', + args: [], + ); + } + + /// `Would you like to receive notifications regarding important updates and alerts, including fee deadlines?` + String get notifications_intro_message { + return Intl.message( + 'Would you like to receive notifications regarding important updates and alerts, including fee deadlines?', + name: 'notifications_intro_message', + desc: '', + args: [], + ); + } } class AppLocalizationDelegate extends LocalizationsDelegate { @@ -1912,4 +2398,4 @@ class AppLocalizationDelegate extends LocalizationsDelegate { } return false; } -} +} \ No newline at end of file diff --git a/packages/uni_app/lib/l10n/intl_en.arb b/packages/uni_app/lib/l10n/intl_en.arb index e7e9a27a7..6949e007a 100644 --- a/packages/uni_app/lib/l10n/intl_en.arb +++ b/packages/uni_app/lib/l10n/intl_en.arb @@ -451,5 +451,19 @@ "services": "Services", "@services": {}, "goi": "Orientation and Integration Office", - "@goi": {} + "@goi": {}, + "map": "Map", + "@map": {}, + "exams_intro_message": "Stay always updated with your exams", + "@exams_intro_message": {}, + "schedule_intro_message": "Keep track of your daily classes and activities", + "@schedule_intro_message": {}, + "restaurants_intro_message": "Discover campus dining options and menus", + "@restaurants_intro_message": {}, + "services_intro_message": "Access various campus services at your fingertips", + "@services_intro_message": {}, + "map_intro_message": "Explore the campus with our interactive map", + "@map_intro_message": {}, + "notifications_intro_message": "Would you like to receive notifications regarding important updates and alerts, including fee deadlines?", + "@notifications_intro_message": {} } \ No newline at end of file diff --git a/packages/uni_app/lib/l10n/intl_pt_PT.arb b/packages/uni_app/lib/l10n/intl_pt_PT.arb index 10587cafd..19825120f 100644 --- a/packages/uni_app/lib/l10n/intl_pt_PT.arb +++ b/packages/uni_app/lib/l10n/intl_pt_PT.arb @@ -451,5 +451,19 @@ "services": "Serviços", "@services": {}, "goi": "Gabinete de Orientação e Integração", - "@goi": {} + "@goi": {}, + "map": "Mapa", + "@map": {}, + "exams_intro_message": "Mantém-te sempre atualizado com os teus exames", + "@exams_intro_message": {}, + "schedule_intro_message": "Mantém o controlo das tuas aulas e atividades diárias", + "@schedule_intro_message": {}, + "restaurants_intro_message": "Descobre as opções de restauração do campus e os menus", + "@restaurants_intro_message": {}, + "services_intro_message": "Explora os serviços académicos disponíveis para ti", + "@services_intro_message": {}, + "map_intro_message": "Navega pelo campus com o nosso mapa interativo", + "@map_intro_message": {}, + "notifications_intro_message": "Queres receber alertas de eventos e informações importantes, incluindo o prazo limite de propinas?", + "@notifications_intro_message": {} } \ No newline at end of file diff --git a/packages/uni_app/lib/main.dart b/packages/uni_app/lib/main.dart index 18be5ac7b..64db64d8e 100644 --- a/packages/uni_app/lib/main.dart +++ b/packages/uni_app/lib/main.dart @@ -30,6 +30,7 @@ import 'package:uni/view/course_unit_info/course_unit_info.dart'; import 'package:uni/view/faculty/faculty.dart'; import 'package:uni/view/home/edit_home.dart'; import 'package:uni/view/home/home.dart'; +import 'package:uni/view/introduction/introduction.dart'; import 'package:uni/view/locale_notifier.dart'; import 'package:uni/view/login/login.dart'; import 'package:uni/view/map/map.dart'; @@ -51,7 +52,7 @@ Future firstRoute() async { final savedSession = await PreferencesController.getSavedSession(); if (savedSession != null) { - return '/${NavigationItem.navPersonalArea.route}'; + return '/${NavigationItem.navIntroduction.route}'; } await acceptTermsAndConditions(); @@ -248,6 +249,11 @@ class ApplicationState extends ConsumerState { page: CourseUnitDetailPageView(courseUnit!), settings: settings, ), + '/${NavigationItem.navIntroduction.route}': + () => PageTransition.introductionTransitionRoute( + page: const IntroductionScreenView(), + settings: settings, + ), }; final builder = transitionFunctions[settings.name]; diff --git a/packages/uni_app/lib/utils/navigation_items.dart b/packages/uni_app/lib/utils/navigation_items.dart index e70a8dd2b..44bc68247 100644 --- a/packages/uni_app/lib/utils/navigation_items.dart +++ b/packages/uni_app/lib/utils/navigation_items.dart @@ -16,7 +16,8 @@ enum NavigationItem { navLogin('login'), navBugreport('bug_report'), navSplash('splash'), - navAboutus('sobre_nos'); + navAboutus('sobre_nos'), + navIntroduction('introducao'); const NavigationItem(this.route, {this.faculties}); diff --git a/packages/uni_app/lib/view/introduction/introduction.dart b/packages/uni_app/lib/view/introduction/introduction.dart new file mode 100644 index 000000000..fe60ac4dd --- /dev/null +++ b/packages/uni_app/lib/view/introduction/introduction.dart @@ -0,0 +1,87 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:uni/view/introduction/widgets/exams_intro_page.dart'; +import 'package:uni/view/introduction/widgets/first_page.dart'; +import 'package:uni/view/introduction/widgets/map_intro_page.dart'; +import 'package:uni/view/introduction/widgets/notifications_intro_page.dart'; +import 'package:uni/view/introduction/widgets/restaurants_intro_page.dart'; +import 'package:uni/view/introduction/widgets/schedule_intro_page.dart'; +import 'package:uni/view/introduction/widgets/services_intro_page.dart'; + +class IntroductionScreenView extends StatefulWidget { + const IntroductionScreenView({super.key}); + + @override + State createState() => _IntroductionScreenViewState(); +} + +class _IntroductionScreenViewState extends State + with TickerProviderStateMixin { + late PageController _pageController; + + @override + void initState() { + super.initState(); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); + _pageController = PageController(); + } + + @override + void dispose() { + _pageController.dispose(); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + SystemChrome.setSystemUIOverlayStyle( + const SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + statusBarIconBrightness: Brightness.light, + ), + ); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); + return Scaffold( + extendBody: true, + extendBodyBehindAppBar: true, + backgroundColor: const Color(0xFF280709), + body: Stack( + children: [ + Container( + decoration: const BoxDecoration( + gradient: RadialGradient( + center: Alignment(-0.95, -1), + colors: [Color(0x705F171D), Color(0x02511515)], + stops: [0, 1], + ), + ), + ), + Container( + decoration: const BoxDecoration( + gradient: RadialGradient( + center: Alignment(0.1, 0.95), + radius: 0.3, + colors: [Color(0x705F171D), Color(0x02511515)], + stops: [0, 1], + ), + ), + ), + PageView( + controller: _pageController, + physics: const NeverScrollableScrollPhysics(), + children: [ + FirstPage(pageController: _pageController), + ExamsIntroPage(pageController: _pageController), + ScheduleIntroPage(pageController: _pageController), + RestaurantsIntroPage(pageController: _pageController), + ServicesIntroPage(pageController: _pageController), + MapIntroPage(pageController: _pageController), + NotificationsIntroPage(pageController: _pageController), + ], + ), + ], + ), + ); + } +} diff --git a/packages/uni_app/lib/view/introduction/widgets/exams_intro_page.dart b/packages/uni_app/lib/view/introduction/widgets/exams_intro_page.dart new file mode 100644 index 000000000..3e37292d7 --- /dev/null +++ b/packages/uni_app/lib/view/introduction/widgets/exams_intro_page.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:uni/generated/l10n.dart'; + +class ExamsIntroPage extends StatefulWidget { + const ExamsIntroPage({super.key, required this.pageController}); + + final PageController pageController; + + @override + State createState() => _ExamsIntroPageState(); +} + +class _ExamsIntroPageState extends State { + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Align( + alignment: const Alignment(0, -0.85), + child: Text( + S.of(context).exams.toUpperCase(), + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 24, + ), + ), + ), + Align( + alignment: const Alignment(0, -0.7), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Text( + S.of(context).exams_intro_message, + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontSize: 16, + ), + ), + ), + ), + Align( + alignment: const Alignment(0.035, 0.5), + child: Image.asset('assets/images/exams_intro.png', width: 260), + ), + Align( + alignment: const Alignment(0, 0.95), + child: GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + width: 60, + height: 60, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Icon( + Icons.arrow_forward_ios_rounded, + color: Color(0xFFFFF5F3), + size: 24, + ), + ), + ), + ), + ), + ], + ); + } +} diff --git a/packages/uni_app/lib/view/introduction/widgets/first_page.dart b/packages/uni_app/lib/view/introduction/widgets/first_page.dart new file mode 100644 index 000000000..054ba7ed8 --- /dev/null +++ b/packages/uni_app/lib/view/introduction/widgets/first_page.dart @@ -0,0 +1,227 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; + +class FirstPage extends StatefulWidget { + const FirstPage({super.key, required this.pageController}); + + final PageController pageController; + + @override + State createState() => _FirstPageState(); +} + +class _FirstPageState extends State with TickerProviderStateMixin { + late AnimationController _logoController; + late AnimationController _image1Controller; + late AnimationController _image2Controller; + late AnimationController _buttonController; + + late Animation _logoFadeAnimation; + late Animation _logoSlideAnimation; + late Animation _image1FadeAnimation; + late Animation _image1SlideAnimation; + late Animation _image2FadeAnimation; + late Animation _image2SlideAnimation; + late Animation _buttonFadeAnimation; + late Animation _buttonSlideAnimation; + + @override + void initState() { + super.initState(); + _logoController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + _image1Controller = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + _image2Controller = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + _buttonController = AnimationController( + duration: const Duration(milliseconds: 800), + vsync: this, + ); + + _logoFadeAnimation = Tween( + begin: 0, + end: 1, + ).animate(CurvedAnimation(parent: _logoController, curve: Curves.easeOut)); + + _logoSlideAnimation = Tween( + begin: const Offset(0, 0.1), + end: Offset.zero, + ).animate(CurvedAnimation(parent: _logoController, curve: Curves.easeOut)); + + _image1FadeAnimation = Tween(begin: 0, end: 1).animate( + CurvedAnimation(parent: _image1Controller, curve: Curves.easeOut), + ); + + _image1SlideAnimation = Tween( + begin: const Offset(0, 0.1), + end: Offset.zero, + ).animate( + CurvedAnimation(parent: _image1Controller, curve: Curves.easeOut), + ); + + _image2FadeAnimation = Tween(begin: 0, end: 1).animate( + CurvedAnimation(parent: _image2Controller, curve: Curves.easeOut), + ); + + _image2SlideAnimation = Tween( + begin: const Offset(0, 0.1), + end: Offset.zero, + ).animate( + CurvedAnimation(parent: _image2Controller, curve: Curves.easeOut), + ); + + _buttonFadeAnimation = Tween(begin: 0, end: 1).animate( + CurvedAnimation(parent: _buttonController, curve: Curves.easeOut), + ); + + _buttonSlideAnimation = Tween( + begin: const Offset(0, 0.1), + end: Offset.zero, + ).animate( + CurvedAnimation(parent: _buttonController, curve: Curves.easeOut), + ); + + _startAnimations(); + } + + Future _startAnimations() async { + unawaited(_logoController.forward()); + + unawaited(Future.delayed(const Duration(milliseconds: 300))); + unawaited(_image1Controller.forward()); + + unawaited(Future.delayed(const Duration(milliseconds: 200))); + unawaited(_image2Controller.forward()); + + unawaited(Future.delayed(const Duration(milliseconds: 200))); + unawaited(_buttonController.forward()); + } + + @override + void dispose() { + _logoController.dispose(); + _image1Controller.dispose(); + _image2Controller.dispose(); + _buttonController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Align( + alignment: const Alignment(0, -0.85), + child: AnimatedBuilder( + animation: _logoController, + builder: (context, child) { + return FadeTransition( + opacity: _logoFadeAnimation, + child: SlideTransition( + position: _logoSlideAnimation, + child: SvgPicture.asset( + 'assets/images/logo_dark.svg', + width: 120, + colorFilter: const ColorFilter.mode( + Color(0xFFFFF5F3), + BlendMode.srcIn, + ), + ), + ), + ); + }, + ), + ), + Align( + alignment: const Alignment(1, -0.1), + child: AnimatedBuilder( + animation: _image2Controller, + builder: (context, child) { + return FadeTransition( + opacity: _image2FadeAnimation, + child: SlideTransition( + position: _image2SlideAnimation, + child: Image.asset('assets/images/intro2.png', width: 220), + ), + ); + }, + ), + ), + Align( + alignment: const Alignment(-1, 0.3), + child: AnimatedBuilder( + animation: _image1Controller, + builder: (context, child) { + return FadeTransition( + opacity: _image1FadeAnimation, + child: SlideTransition( + position: _image1SlideAnimation, + child: Image.asset('assets/images/intro1.png', width: 220), + ), + ); + }, + ), + ), + Align( + alignment: const Alignment(0, 0.95), + child: AnimatedBuilder( + animation: _buttonController, + builder: (context, child) { + return FadeTransition( + opacity: _buttonFadeAnimation, + child: SlideTransition( + position: _buttonSlideAnimation, + child: GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + width: 60, + height: 60, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Icon( + Icons.arrow_forward_ios_rounded, + color: Color(0xFFFFF5F3), + size: 24, + ), + ), + ), + ), + ), + ); + }, + ), + ), + ], + ); + } +} diff --git a/packages/uni_app/lib/view/introduction/widgets/map_intro_page.dart b/packages/uni_app/lib/view/introduction/widgets/map_intro_page.dart new file mode 100644 index 000000000..b1b743067 --- /dev/null +++ b/packages/uni_app/lib/view/introduction/widgets/map_intro_page.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:uni/generated/l10n.dart'; + +class MapIntroPage extends StatefulWidget { + const MapIntroPage({super.key, required this.pageController}); + + final PageController pageController; + + @override + State createState() => _MapIntroPageState(); +} + +class _MapIntroPageState extends State { + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Align( + alignment: const Alignment(0, -0.85), + child: Text( + S.of(context).map.toUpperCase(), + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 24, + ), + ), + ), + Align( + alignment: const Alignment(0, -0.7), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Text( + S.of(context).map_intro_message, + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontSize: 16, + ), + ), + ), + ), + Align( + alignment: const Alignment(0.035, 0.5), + child: Image.asset('assets/images/map_intro.png', width: 260), + ), + Align( + alignment: const Alignment(0, 0.95), + child: GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + width: 60, + height: 60, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Icon( + Icons.arrow_forward_ios_rounded, + color: Color(0xFFFFF5F3), + size: 24, + ), + ), + ), + ), + ), + ], + ); + } +} diff --git a/packages/uni_app/lib/view/introduction/widgets/notifications_intro_page.dart b/packages/uni_app/lib/view/introduction/widgets/notifications_intro_page.dart new file mode 100644 index 000000000..6ac7c991b --- /dev/null +++ b/packages/uni_app/lib/view/introduction/widgets/notifications_intro_page.dart @@ -0,0 +1,249 @@ +import 'dart:ui'; +import 'package:flutter/material.dart'; +import 'package:uni/controller/background_workers/notifications.dart'; +import 'package:uni/generated/l10n.dart'; + +class NotificationsIntroPage extends StatefulWidget { + const NotificationsIntroPage({super.key, required this.pageController}); + + final PageController pageController; + + @override + State createState() => _NotificationsIntroPageState(); +} + +class _NotificationsIntroPageState extends State { + final NotificationManager _notificationManager = NotificationManager(); + + bool notificationPermission = false; + + @override + void initState() { + super.initState(); + _loadNotificationPermission(); + } + + Future _loadNotificationPermission() async { + final granted = await _notificationManager.hasNotificationPermission(); + if (!mounted) { + return; + } + setState(() { + notificationPermission = granted; + }); + } + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Align( + alignment: const Alignment(0, -0.85), + child: Column( + mainAxisSize: MainAxisSize.min, + spacing: 12, + children: [ + const Icon( + Icons.notifications_rounded, + size: 48, + color: Color(0xFFFFF5F3), + ), + Text( + S.of(context).notifications.toUpperCase(), + style: const TextStyle( + fontFamily: 'Poppins', + color: Color(0xFFFFF5F3), + fontWeight: FontWeight.bold, + fontSize: 24, + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Text( + S.of(context).notifications_intro_message, + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'Poppins', + color: Color(0xFFFFF5F3), + fontSize: 16, + ), + ), + ), + ], + ), + ), + Align( + alignment: const Alignment(0, 0.3), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 32), + child: ClipRRect( + borderRadius: BorderRadius.circular(25), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), + child: Container( + decoration: ShapeDecoration( + color: const Color(0xFFFFF5F3).withValues(alpha: 0.1), + shape: RoundedSuperellipseBorder( + borderRadius: BorderRadius.circular(25), + ), + ), + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + spacing: 12, + children: [ + Icon( + notificationPermission + ? Icons.check_circle_rounded + : Icons.error_rounded, + size: 32, + color: const Color(0xFFFFF5F3), + ), + Text( + notificationPermission + ? 'uni has permission to send you notifications.' + : 'uni does not have permission to send you notifications yet.', + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'Poppins', + color: Color(0xFFFFF5F3), + fontSize: 12, + ), + ), + ], + ), + ), + ), + ), + ), + ), + ), + Align( + alignment: const Alignment(0, 0.95), + child: + notificationPermission + ? GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + width: 60, + height: 60, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Icon( + Icons.arrow_forward_ios_rounded, + color: Color(0xFFFFF5F3), + size: 24, + ), + ), + ), + ) + : Row( + mainAxisSize: MainAxisSize.min, + spacing: 32, + children: [ + GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + height: 60, + padding: const EdgeInsets.symmetric( + vertical: 12, + horizontal: 24, + ), + child: const Center( + child: Text( + 'Skip', + style: TextStyle( + fontFamily: 'Poppins', + color: Color(0xFFFFF5F3), + fontSize: 16, + ), + ), + ), + ), + ), + GestureDetector( + onTap: () async { + try { + await NotificationManager() + .initializeNotifications(); + final granted = + await _notificationManager + .hasNotificationPermission(); + if (!mounted) { + return; + } + setState(() { + notificationPermission = granted; + }); + } catch (_) {} + }, + child: Container( + height: 48, + padding: const EdgeInsets.symmetric( + vertical: 12, + horizontal: 24, + ), + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Text( + 'Allow', + style: TextStyle( + fontFamily: 'Poppins', + color: Color(0xFFFFF5F3), + fontSize: 16, + ), + ), + ), + ), + ), + ], + ), + ), + ], + ); + } +} diff --git a/packages/uni_app/lib/view/introduction/widgets/restaurants_intro_page.dart b/packages/uni_app/lib/view/introduction/widgets/restaurants_intro_page.dart new file mode 100644 index 000000000..1f70ee0d5 --- /dev/null +++ b/packages/uni_app/lib/view/introduction/widgets/restaurants_intro_page.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:uni/generated/l10n.dart'; + +class RestaurantsIntroPage extends StatefulWidget { + const RestaurantsIntroPage({super.key, required this.pageController}); + + final PageController pageController; + + @override + State createState() => _RestaurantsIntroPageState(); +} + +class _RestaurantsIntroPageState extends State { + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Align( + alignment: const Alignment(0, -0.85), + child: Text( + S.of(context).restaurants.toUpperCase(), + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 24, + ), + ), + ), + Align( + alignment: const Alignment(0, -0.7), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Text( + S.of(context).restaurants_intro_message, + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontSize: 16, + ), + ), + ), + ), + Align( + alignment: const Alignment(0.035, 0.5), + child: Image.asset('assets/images/restaurants_intro.png', width: 260), + ), + Align( + alignment: const Alignment(0, 0.95), + child: GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + width: 60, + height: 60, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Icon( + Icons.arrow_forward_ios_rounded, + color: Color(0xFFFFF5F3), + size: 24, + ), + ), + ), + ), + ), + ], + ); + } +} diff --git a/packages/uni_app/lib/view/introduction/widgets/schedule_intro_page.dart b/packages/uni_app/lib/view/introduction/widgets/schedule_intro_page.dart new file mode 100644 index 000000000..08ff1c6a6 --- /dev/null +++ b/packages/uni_app/lib/view/introduction/widgets/schedule_intro_page.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:uni/generated/l10n.dart'; + +class ScheduleIntroPage extends StatefulWidget { + const ScheduleIntroPage({super.key, required this.pageController}); + + final PageController pageController; + + @override + State createState() => _ScheduleIntroPageState(); +} + +class _ScheduleIntroPageState extends State { + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Align( + alignment: const Alignment(0, -0.85), + child: Text( + S.of(context).schedule.toUpperCase(), + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 24, + ), + ), + ), + Align( + alignment: const Alignment(0, -0.7), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Text( + S.of(context).schedule_intro_message, + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontSize: 16, + ), + ), + ), + ), + Align( + alignment: const Alignment(0.035, 0.5), + child: Image.asset('assets/images/schedule_intro.png', width: 260), + ), + Align( + alignment: const Alignment(0, 0.95), + child: GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + width: 60, + height: 60, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Icon( + Icons.arrow_forward_ios_rounded, + color: Color(0xFFFFF5F3), + size: 24, + ), + ), + ), + ), + ), + ], + ); + } +} diff --git a/packages/uni_app/lib/view/introduction/widgets/services_intro_page.dart b/packages/uni_app/lib/view/introduction/widgets/services_intro_page.dart new file mode 100644 index 000000000..949a94b7a --- /dev/null +++ b/packages/uni_app/lib/view/introduction/widgets/services_intro_page.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:uni/generated/l10n.dart'; + +class ServicesIntroPage extends StatefulWidget { + const ServicesIntroPage({super.key, required this.pageController}); + + final PageController pageController; + + @override + State createState() => _ServicesIntroPageState(); +} + +class _ServicesIntroPageState extends State { + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Align( + alignment: const Alignment(0, -0.85), + child: Text( + S.of(context).services.toUpperCase(), + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 24, + ), + ), + ), + Align( + alignment: const Alignment(0, -0.7), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Text( + S.of(context).services_intro_message, + textAlign: TextAlign.center, + style: const TextStyle( + fontFamily: 'Poppins', + color: Colors.white, + fontSize: 16, + ), + ), + ), + ), + Align( + alignment: const Alignment(0.035, 0.5), + child: Image.asset('assets/images/faculty_intro.png', width: 260), + ), + Align( + alignment: const Alignment(0, 0.95), + child: GestureDetector( + onTap: () { + widget.pageController.nextPage( + duration: const Duration(milliseconds: 500), + curve: Curves.easeInOut, + ); + }, + child: Container( + width: 60, + height: 60, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment.bottomRight, + end: Alignment(-0.24, -0.31), + colors: [Color(0xFF280709), Color(0xFF461014)], + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(100), + ), + shadows: const [ + BoxShadow( + color: Color(0xBF996B6E), + blurRadius: 22, + offset: Offset(0, 7), + ), + ], + ), + child: const Center( + child: Icon( + Icons.arrow_forward_ios_rounded, + color: Color(0xFFFFF5F3), + size: 24, + ), + ), + ), + ), + ), + ], + ); + } +} diff --git a/packages/uni_app/lib/view/login/login.dart b/packages/uni_app/lib/view/login/login.dart index fde010b68..098cd8559 100644 --- a/packages/uni_app/lib/view/login/login.dart +++ b/packages/uni_app/lib/view/login/login.dart @@ -60,12 +60,14 @@ class LoginPageViewState extends ConsumerState @override void initState() { super.initState(); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); WidgetsBinding.instance.addObserver(this); } @override void dispose() { WidgetsBinding.instance.removeObserver(this); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); super.dispose(); } @@ -96,7 +98,7 @@ class LoginPageViewState extends ConsumerState if (mounted) { await Navigator.pushReplacementNamed( context, - '/${NavigationItem.navPersonalArea.route}', + '/${NavigationItem.navIntroduction.route}', ); setState(() { _loggingIn = false; @@ -167,6 +169,11 @@ class LoginPageViewState extends ConsumerState _loggingIn = true; }); } + if (mounted) { + setState(() { + _loggingIn = true; + }); + } final appLinks = UniAppLinks(); @@ -188,6 +195,12 @@ class LoginPageViewState extends ConsumerState persistentSession: _keepSignedIn, ); + if (mounted) { + setState(() { + _intercepting = true; + _loggingIn = true; + }); + } if (mounted) { setState(() { _intercepting = true; @@ -198,7 +211,7 @@ class LoginPageViewState extends ConsumerState if (mounted) { await Navigator.pushReplacementNamed( context, - '/${NavigationItem.navPersonalArea.route}', + '/${NavigationItem.navIntroduction.route}', ); } @@ -208,6 +221,12 @@ class LoginPageViewState extends ConsumerState _intercepting = false; }); } + if (mounted) { + setState(() { + _loggingIn = true; + _intercepting = false; + }); + } } catch (err, st) { await Sentry.captureException(err, stackTrace: st); await closeInAppWebView(); @@ -215,6 +234,8 @@ class LoginPageViewState extends ConsumerState setState(() { _loggingIn = false; }); + } + if (mounted) { Logger().e(S.of(context).fail_to_authenticate); unawaited( ToastMessage.error(context, S.of(context).fail_to_authenticate), @@ -227,6 +248,13 @@ class LoginPageViewState extends ConsumerState @override Widget build(BuildContext context) { + SystemChrome.setSystemUIOverlayStyle( + const SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + statusBarIconBrightness: Brightness.light, + ), + ); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); return Theme( data: Theme.of(context), child: Builder( diff --git a/packages/uni_app/lib/view/splash/splash.dart b/packages/uni_app/lib/view/splash/splash.dart index cb8fc406c..d595a0277 100644 --- a/packages/uni_app/lib/view/splash/splash.dart +++ b/packages/uni_app/lib/view/splash/splash.dart @@ -14,6 +14,13 @@ class SplashScreenView extends StatefulWidget { class _SplashScreenViewState extends State { @override Widget build(BuildContext context) { + SystemChrome.setSystemUIOverlayStyle( + const SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + statusBarIconBrightness: Brightness.light, + ), + ); + SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); Future.delayed(const Duration(milliseconds: 1500), () async { if (mounted) { final route = await firstRoute(); diff --git a/packages/uni_app/lib/view/widgets/page_transition.dart b/packages/uni_app/lib/view/widgets/page_transition.dart index c462f59da..47c895d75 100644 --- a/packages/uni_app/lib/view/widgets/page_transition.dart +++ b/packages/uni_app/lib/view/widgets/page_transition.dart @@ -1,3 +1,4 @@ +import 'package:animations/animations.dart'; import 'package:flutter/material.dart'; import 'package:uni/controller/networking/network_router.dart'; import 'package:uni/view/terms_and_condition_dialog.dart'; @@ -50,6 +51,26 @@ class PageTransition { ); } + static Route introductionTransitionRoute({ + required Widget page, + required RouteSettings settings, + bool maintainState = true, + }) { + return PageRouteBuilder( + pageBuilder: (context, animation, secondaryAnimation) => page, + settings: settings, + maintainState: maintainState, + transitionsBuilder: (context, animation, secondaryAnimation, child) { + return SharedAxisTransition( + animation: animation, + secondaryAnimation: secondaryAnimation, + transitionType: SharedAxisTransitionType.vertical, + child: child, + ); + }, + ); + } + static Future requestTermsAndConditionsAcceptanceIfNeeded( BuildContext context, ) async { diff --git a/packages/uni_app/pubspec.yaml b/packages/uni_app/pubspec.yaml index ddb22829d..949abb2fc 100644 --- a/packages/uni_app/pubspec.yaml +++ b/packages/uni_app/pubspec.yaml @@ -16,6 +16,7 @@ environment: dependencies: add_2_calendar_new: ^1.0.4 + animations: ^2.0.11 app_links: ^6.4.1 app_settings: git: @@ -69,6 +70,7 @@ dependencies: path: ^1.9.1 path_provider: ^2.1.5 percent_indicator: ^4.2.5 + permission_handler: ^12.0.1 plausible_analytics: ^0.3.0 sentry_flutter: ^9.7.0 shared_preferences: ^2.5.3 @@ -130,6 +132,53 @@ flutter: weight: 600 - asset: assets/fonts/Raleway-Thin.ttf weight: 100 + - family: Poppins + fonts: + - asset: assets/fonts/Poppins/Poppins-Black.ttf + weight: 900 + - asset: assets/fonts/Poppins/Poppins-BlackItalic.ttf + weight: 900 + style: italic + - asset: assets/fonts/Poppins/Poppins-Bold.ttf + weight: 700 + - asset: assets/fonts/Poppins/Poppins-BoldItalic.ttf + weight: 700 + style: italic + - asset: assets/fonts/Poppins/Poppins-ExtraBold.ttf + weight: 800 + - asset: assets/fonts/Poppins/Poppins-ExtraBoldItalic.ttf + weight: 800 + style: italic + - asset: assets/fonts/Poppins/Poppins-ExtraLight.ttf + weight: 200 + - asset: assets/fonts/Poppins/Poppins-ExtraLightItalic.ttf + weight: 200 + style: italic + - asset: assets/fonts/Poppins/Poppins-Light.ttf + weight: 300 + - asset: assets/fonts/Poppins/Poppins-LightItalic.ttf + weight: 300 + style: italic + - asset: assets/fonts/Poppins/Poppins-Medium.ttf + weight: 500 + - asset: assets/fonts/Poppins/Poppins-MediumItalic.ttf + weight: 500 + style: italic + - asset: assets/fonts/Poppins/Poppins-Regular.ttf + weight: 400 + - asset: assets/fonts/Poppins/Poppins-Italic.ttf + weight: 400 + style: italic + - asset: assets/fonts/Poppins/Poppins-SemiBold.ttf + weight: 600 + - asset: assets/fonts/Poppins/Poppins-SemiBoldItalic.ttf + weight: 600 + style: italic + - asset: assets/fonts/Poppins/Poppins-Thin.ttf + weight: 100 + - asset: assets/fonts/Poppins/Poppins-ThinItalic.ttf + weight: 100 + style: italic flutter_intl: enabled: true diff --git a/packages/uni_app/windows/flutter/generated_plugins.cmake b/packages/uni_app/windows/flutter/generated_plugins.cmake index ef31d9dc3..d611b314e 100644 --- a/packages/uni_app/windows/flutter/generated_plugins.cmake +++ b/packages/uni_app/windows/flutter/generated_plugins.cmake @@ -9,6 +9,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_windows flutter_secure_storage_windows objectbox_flutter_libs + permission_handler_windows sentry_flutter url_launcher_windows ) diff --git a/pubspec.lock b/pubspec.lock index 1c0f84f8a..4c50378c8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -41,6 +41,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.4" + animations: + dependency: transitive + description: + name: animations + sha256: d3d6dcfb218225bbe68e87ccf6378bbb2e32a94900722c5f81611dad089911cb + url: "https://pub.dev" + source: hosted + version: "2.0.11" ansicolor: dependency: transitive description: @@ -1327,6 +1335,54 @@ packages: url: "https://pub.dev" source: hosted version: "4.2.5" + permission_handler: + dependency: transitive + description: + name: permission_handler + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" petitparser: dependency: transitive description: