Merge branch 'dev' of github.com:refilc/naplo into dev

This commit is contained in:
Kima 2024-05-01 18:26:13 +02:00
commit ca177ad69f
17 changed files with 317 additions and 332 deletions

View File

@ -83,8 +83,7 @@ class AppTheme {
accentColor == AccentColor.ogfilc) || accentColor == AccentColor.ogfilc) ||
!settings.newColors !settings.newColors
? accent ? accent
: ColorsUtils().darken(accent, : ColorsUtils().darken(accent, amount: 0.5);
amount: 0.4); // white mode: same tertiary as secondary
return ThemeData( return ThemeData(
brightness: Brightness.light, brightness: Brightness.light,
@ -187,15 +186,14 @@ class AppTheme {
accentColor == AccentColor.ogfilc) || accentColor == AccentColor.ogfilc) ||
!settings.newColors !settings.newColors
? accent ? accent
: ColorsUtils().lighten(accent, amount: 0.3); : ColorsUtils().lighten(accent, amount: 0.1);
// Color newScaffoldBg = ColorsUtils().lighten(accent, amount: 0.4); // Color newScaffoldBg = ColorsUtils().lighten(accent, amount: 0.4);
Color newTertiary = (accentColor == AccentColor.adaptive || Color newTertiary = (accentColor == AccentColor.adaptive ||
accentColor == AccentColor.custom || accentColor == AccentColor.custom ||
accentColor == AccentColor.ogfilc) || accentColor == AccentColor.ogfilc) ||
!settings.newColors !settings.newColors
? accent ? accent
: ColorsUtils().darken(accent, : ColorsUtils().lighten(accent, amount: 0.4);
amount: 0.1); // dark mode: tertiary is way darker than secondary
return ThemeData( return ThemeData(
brightness: Brightness.dark, brightness: Brightness.dark,

View File

@ -81,6 +81,7 @@ dependencies:
get_it: ^7.6.7 get_it: ^7.6.7
xml: ^6.5.0 xml: ^6.5.0
carousel_slider: ^4.2.1 carousel_slider: ^4.2.1
flutter_portal: ^1.1.4
dev_dependencies: dev_dependencies:
flutter_lints: ^3.0.1 flutter_lints: ^3.0.1

View File

@ -61,7 +61,7 @@ class _FilterBarState extends State<FilterBar> {
indicatorSize: TabBarIndicatorSize.tab, indicatorSize: TabBarIndicatorSize.tab,
indicatorPadding: const EdgeInsets.symmetric(vertical: 8.0), indicatorPadding: const EdgeInsets.symmetric(vertical: 8.0),
indicator: BoxDecoration( indicator: BoxDecoration(
color: Theme.of(context).colorScheme.tertiary.withOpacity(.2), color: Theme.of(context).colorScheme.secondary.withOpacity(.2),
borderRadius: BorderRadius.circular(45.0), borderRadius: BorderRadius.circular(45.0),
), ),
overlayColor: MaterialStateProperty.all(const Color(0x00000000)), overlayColor: MaterialStateProperty.all(const Color(0x00000000)),

View File

@ -58,7 +58,7 @@ class ProfileButton extends StatelessWidget {
return ProfileImage( return ProfileImage(
backgroundColor: !pMode backgroundColor: !pMode
? child.backgroundColor ? child.backgroundColor
: Theme.of(context).colorScheme.tertiary, : Theme.of(context).colorScheme.secondary,
heroTag: child.heroTag, heroTag: child.heroTag,
key: child.key, key: child.key,
name: !pMode ? child.name : "János", name: !pMode ? child.name : "János",

View File

@ -165,7 +165,7 @@ class AbsencesPageState extends State<AbsencesPage>
name: firstName, name: firstName,
backgroundColor: Theme.of(context) backgroundColor: Theme.of(context)
.colorScheme .colorScheme
.tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), .secondary, //ColorUtils.stringToColor(user.displayName ?? "?"),
badge: updateProvider.available, badge: updateProvider.available,
role: user.role, role: user.role,
profilePictureString: user.picture, profilePictureString: user.picture,

View File

@ -147,8 +147,8 @@ class _GradeSubjectViewState extends State<GradeSubjectView>
), ),
)); ));
if (!gradeCalcMode) { tiles.addAll(
tiles.addAll([ [
const SizedBox( const SizedBox(
height: 5.0, height: 5.0,
), ),
@ -162,8 +162,8 @@ class _GradeSubjectViewState extends State<GradeSubjectView>
controller: _tabController, controller: _tabController,
disableFading: true, disableFading: true,
), ),
]); ],
} );
if (showGraph(subjectGrades) && _tabController.index == 0) { if (showGraph(subjectGrades) && _tabController.index == 0) {
tiles.add(gradeGraph); tiles.add(gradeGraph);
@ -380,31 +380,13 @@ class _GradeSubjectViewState extends State<GradeSubjectView>
.where((e) => e.type == GradeType.midYear) .where((e) => e.type == GradeType.midYear)
.isNotEmpty, .isNotEmpty,
child: ExpandableFab( child: ExpandableFab(
openButtonBuilder: FloatingActionButtonBuilder(
size: 20.0,
builder: (context, onPressed, progress) =>
FloatingActionButton.small(
onPressed: onPressed,
backgroundColor: Theme.of(context).colorScheme.tertiary,
child: const Icon(Icons.more_horiz_outlined),
),
),
closeButtonBuilder: FloatingActionButtonBuilder(
size: 20.0,
builder: (context, onPressed, progress) =>
FloatingActionButton.small(
onPressed: onPressed,
backgroundColor: Theme.of(context).colorScheme.tertiary,
child: const Icon(Icons.close),
),
),
type: ExpandableFabType.up, type: ExpandableFabType.up,
distance: 50, distance: 50,
// childrenOffset: const Offset(-8.8, 0.0), childrenOffset: const Offset(-3.8, 0.0),
children: [ children: [
FloatingActionButton.small( FloatingActionButton.small(
heroTag: "btn_ghost_grades", heroTag: "btn_ghost_grades",
backgroundColor: Theme.of(context).colorScheme.tertiary, backgroundColor: Theme.of(context).colorScheme.secondary,
onPressed: () { onPressed: () {
gradeCalc(context); gradeCalc(context);
}, },
@ -412,7 +394,7 @@ class _GradeSubjectViewState extends State<GradeSubjectView>
), ),
FloatingActionButton.small( FloatingActionButton.small(
heroTag: "btn_goal_planner", heroTag: "btn_goal_planner",
backgroundColor: Theme.of(context).colorScheme.tertiary, backgroundColor: Theme.of(context).colorScheme.secondary,
onPressed: () { onPressed: () {
// if (!Provider.of<PlusProvider>(context, listen: false) // if (!Provider.of<PlusProvider>(context, listen: false)
// .hasScope(PremiumScopes.goalPlanner)) { // .hasScope(PremiumScopes.goalPlanner)) {
@ -551,10 +533,6 @@ class _GradeSubjectViewState extends State<GradeSubjectView>
elevation: 12.0, elevation: 12.0,
); );
// set tab
int tabIndex = _tabController.index;
_tabController.animateTo(0);
// Hide the fab and grades // Hide the fab and grades
setState(() { setState(() {
gradeCalcMode = true; gradeCalcMode = true;
@ -563,9 +541,6 @@ class _GradeSubjectViewState extends State<GradeSubjectView>
_sheetController!.closed.then((value) { _sheetController!.closed.then((value) {
// Show fab and grades // Show fab and grades
if (mounted) { if (mounted) {
// set tab
_tabController.animateTo(tabIndex);
setState(() { setState(() {
gradeCalcMode = false; gradeCalcMode = false;
}); });

View File

@ -546,7 +546,7 @@ class GradesPageState extends State<GradesPage> {
name: firstName, name: firstName,
backgroundColor: Theme.of(context) backgroundColor: Theme.of(context)
.colorScheme .colorScheme
.tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), .secondary, //ColorUtils.stringToColor(user.displayName ?? "?"),
badge: updateProvider.available, badge: updateProvider.available,
role: user.role, role: user.role,
profilePictureString: user.picture, profilePictureString: user.picture,

View File

@ -307,7 +307,7 @@ class HomePageState extends State<HomePage> with TickerProviderStateMixin {
name: firstName, name: firstName,
backgroundColor: Theme.of(context) backgroundColor: Theme.of(context)
.colorScheme .colorScheme
.tertiary, //!settings.presentationMode .secondary, //!settings.presentationMode
//? ColorUtils.stringToColor(user.displayName ?? "?") //? ColorUtils.stringToColor(user.displayName ?? "?")
//: Theme.of(context).colorScheme.secondary, //: Theme.of(context).colorScheme.secondary,
badge: updateProvider.available, badge: updateProvider.available,

View File

@ -105,7 +105,7 @@ class MessagesPageState extends State<MessagesPage>
name: firstName, name: firstName,
backgroundColor: Theme.of(context) backgroundColor: Theme.of(context)
.colorScheme .colorScheme
.tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), .secondary, //ColorUtils.stringToColor(user.displayName ?? "?"),
badge: updateProvider.available, badge: updateProvider.available,
role: user.role, role: user.role,
profilePictureString: user.picture, profilePictureString: user.picture,

View File

@ -251,7 +251,7 @@ class NotesPageState extends State<NotesPage> with TickerProviderStateMixin {
name: firstName, name: firstName,
backgroundColor: Theme.of(context) backgroundColor: Theme.of(context)
.colorScheme .colorScheme
.tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), .secondary, //ColorUtils.stringToColor(user.displayName ?? "?"),
badge: updateProvider.available, badge: updateProvider.available,
role: user.role, role: user.role,
profilePictureString: user.picture, profilePictureString: user.picture,

View File

@ -283,7 +283,7 @@ class TimetablePageState extends State<TimetablePage>
name: firstName, name: firstName,
backgroundColor: Theme.of(context) backgroundColor: Theme.of(context)
.colorScheme .colorScheme
.tertiary, //ColorUtils.stringToColor(user.displayName ?? "?"), .secondary, //ColorUtils.stringToColor(user.displayName ?? "?"),
badge: updateProvider.available, badge: updateProvider.available,
role: user.role, role: user.role,
profilePictureString: user.picture, profilePictureString: user.picture,

View File

@ -15,6 +15,7 @@ import 'package:flutter/services.dart';
import 'login_screen.i18n.dart'; import 'login_screen.i18n.dart';
import 'package:carousel_slider/carousel_slider.dart'; import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_portal/flutter_portal.dart';
class LoginScreen extends StatefulWidget { class LoginScreen extends StatefulWidget {
const LoginScreen({super.key, this.back = false}); const LoginScreen({super.key, this.back = false});
@ -78,7 +79,13 @@ class LoginScreenState extends State<LoginScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( precacheImage(const AssetImage('assets/images/showcase1.png'), context);
precacheImage(const AssetImage('assets/images/showcase2.png'), context);
precacheImage(const AssetImage('assets/images/showcase3.png'), context);
precacheImage(const AssetImage('assets/images/showcase4.png'), context);
return Portal(
child: Scaffold(
body: Container( body: Container(
decoration: const BoxDecoration(color: Color(0xFFDAE4F7)), decoration: const BoxDecoration(color: Color(0xFFDAE4F7)),
child: SingleChildScrollView( child: SingleChildScrollView(
@ -103,10 +110,10 @@ class LoginScreenState extends State<LoginScreen> {
width: 30.0, width: 30.0,
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
Text( const Text(
'reFilc', 'reFilc',
style: TextStyle( style: TextStyle(
color: AppColors.of(context).loginPrimary, color: Color(0xFF050B15),
fontSize: 18.0, fontSize: 18.0,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontFamily: 'Montserrat'), fontFamily: 'Montserrat'),
@ -130,7 +137,7 @@ class LoginScreenState extends State<LoginScreen> {
height: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.height,
viewportFraction: 1, viewportFraction: 1,
autoPlay: true, autoPlay: true,
autoPlayInterval: const Duration(seconds: 4), autoPlayInterval: const Duration(seconds: 6),
pauseAutoPlayOnTouch: true), pauseAutoPlayOnTouch: true),
items: [1, 2, 3, 4].map((i) { items: [1, 2, 3, 4].map((i) {
return Builder( return Builder(
@ -140,7 +147,8 @@ class LoginScreenState extends State<LoginScreen> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(left: 24), padding:
const EdgeInsets.only(left: 24),
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
@ -149,24 +157,25 @@ class LoginScreenState extends State<LoginScreen> {
children: [ children: [
Text( Text(
"welcome_title_$i".i18n, "welcome_title_$i".i18n,
style: TextStyle( style: const TextStyle(
color: AppColors.of(context) color: Color(0xFF050B15),
.loginPrimary, fontSize: 19,
fontSize: 20,
fontFamily: 'Montserrat', fontFamily: 'Montserrat',
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
height: 1.3), height: 1.3),
), ),
const SizedBox(height: 14.375), //meth const SizedBox(
height: 14.375), //meth
Padding( Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
right: 20), right: 20),
child: Text( child: Text(
"welcome_text_$i".i18n, "welcome_text_$i".i18n,
style: const TextStyle( style: const TextStyle(
color: Color(0xFF050B15),
fontFamily: 'FigTree', fontFamily: 'FigTree',
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontSize: 18, fontSize: 17,
height: 1.3), height: 1.3),
), ),
), ),
@ -177,7 +186,8 @@ class LoginScreenState extends State<LoginScreen> {
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
left: 16, right: 16), left: 16, right: 16),
child: Image.asset( child: Image.asset(
'assets/images/showcase$i.png', fit: BoxFit.fitWidth)), 'assets/images/showcase$i.png',
fit: BoxFit.fitWidth)),
], ],
); );
}, },
@ -186,7 +196,6 @@ class LoginScreenState extends State<LoginScreen> {
), ),
], ],
) )
// // inputs // // inputs
// Padding( // Padding(
// padding: const EdgeInsets.only( // padding: const EdgeInsets.only(
@ -375,6 +384,7 @@ class LoginScreenState extends State<LoginScreen> {
), ),
), ),
), ),
),
); );
} }

View File

@ -60,7 +60,7 @@ extension Localization on String {
"welcome_title_3": "welcome_title_3":
"Kövesd a céljaidat, és legyen a matek egyesből matek ötös.", "Kövesd a céljaidat, és legyen a matek egyesből matek ötös.",
"welcome_text_3": "welcome_text_3":
"Állítsd be a célodat, és mi megmondjuk, hányas jegyet kell szerezned. Még konfetti is van a cél elérésekor.", "Állítsd be a célodat, és mi megmondjuk, hány jegyet kell szerezned. Még konfetti is van a cél elérésekor.",
"welcome_title_4": "Füzetelj annyit, amennyit csak szeretnél.", "welcome_title_4": "Füzetelj annyit, amennyit csak szeretnél.",
"welcome_text_4": "welcome_text_4":
"A beépített jegyzetfüzetbe órák szerint is rendezheted a jegyzeteidet, így mindent megtalálsz egy appban.", "A beépített jegyzetfüzetbe órák szerint is rendezheted a jegyzeteidet, így mindent megtalálsz egy appban.",

View File

@ -34,7 +34,7 @@ class NavbarItem extends StatelessWidget {
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: active color: active
? Theme.of(context).colorScheme.tertiary.withOpacity(.2) ? Theme.of(context).colorScheme.secondary.withOpacity(.2)
: null, : null,
borderRadius: BorderRadius.circular(14.0), borderRadius: BorderRadius.circular(14.0),
), ),

View File

@ -30,7 +30,7 @@ class AccountView extends StatelessWidget {
AccountTile( AccountTile(
profileImage: ProfileImage( profileImage: ProfileImage(
name: _firstName, name: _firstName,
backgroundColor: Theme.of(context).colorScheme.tertiary, backgroundColor: Theme.of(context).colorScheme.secondary,
role: user.role, role: user.role,
), ),
name: SelectableText( name: SelectableText(

View File

@ -136,7 +136,7 @@ class SettingsScreenState extends State<SettingsScreen>
profilePictureString: account.picture, profilePictureString: account.picture,
backgroundColor: Theme.of(context) backgroundColor: Theme.of(context)
.colorScheme .colorScheme
.tertiary, //!settings.presentationMode .secondary, //!settings.presentationMode
//? ColorUtils.stringToColor(account.name) //? ColorUtils.stringToColor(account.name)
//: Theme.of(context).colorScheme.secondary, //: Theme.of(context).colorScheme.secondary,
), ),

View File

@ -70,6 +70,7 @@ dependencies:
xml: ^6.5.0 xml: ^6.5.0
markdown: ^7.2.2 markdown: ^7.2.2
carousel_slider: ^4.2.1 carousel_slider: ^4.2.1
flutter_portal: ^1.1.4
dev_dependencies: dev_dependencies:
flutter_lints: ^3.0.1 flutter_lints: ^3.0.1