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

This commit is contained in:
Kima 2024-05-02 20:29:44 +02:00
commit a4b04798f2
2 changed files with 310 additions and 249 deletions

View File

@ -1,5 +1,7 @@
// import 'dart:async'; // import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:refilc/api/client.dart'; import 'package:refilc/api/client.dart';
import 'package:refilc/api/login.dart'; import 'package:refilc/api/login.dart';
import 'package:refilc/theme/colors/colors.dart'; import 'package:refilc/theme/colors/colors.dart';
@ -97,8 +99,6 @@ class LoginScreenState extends State<LoginScreen> {
height: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.height,
child: SafeArea( child: SafeArea(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
// app icon // app icon
Padding( Padding(
@ -127,257 +127,318 @@ class LoginScreenState extends State<LoginScreen> {
), ),
], ],
)), )),
Column( Stack(
mainAxisAlignment: MainAxisAlignment.center, alignment: Alignment.bottomCenter,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const SizedBox(height: 21), Column(
CarouselSlider( mainAxisAlignment: MainAxisAlignment.center,
options: CarouselOptions( crossAxisAlignment: CrossAxisAlignment.center,
height: MediaQuery.of(context).size.height, children: [
viewportFraction: 1, const SizedBox(height: 21),
autoPlay: true, CarouselSlider(
autoPlayInterval: const Duration(seconds: 6), options: CarouselOptions(
pauseAutoPlayOnTouch: true), height: MediaQuery.of(context).size.height,
items: [1, 2, 3, 4].map((i) { viewportFraction: 1,
return Builder( autoPlay: true,
builder: (BuildContext context) { autoPlayInterval: const Duration(seconds: 6),
return Column( pauseAutoPlayOnTouch: true),
crossAxisAlignment: CrossAxisAlignment.start, items: [1, 2, 3, 4].map((i) {
mainAxisAlignment: MainAxisAlignment.start, return Builder(
children: [ builder: (BuildContext context) {
Padding( return Column(
padding: crossAxisAlignment:
const EdgeInsets.only(left: 24), CrossAxisAlignment.start,
child: Column( mainAxisAlignment:
crossAxisAlignment: MainAxisAlignment.start,
CrossAxisAlignment.start, children: [
mainAxisAlignment: Padding(
MainAxisAlignment.start, padding:
children: [ const EdgeInsets.only(left: 24),
Text( child: Column(
"welcome_title_$i".i18n, crossAxisAlignment:
style: const TextStyle( CrossAxisAlignment.start,
color: Color(0xFF050B15), mainAxisAlignment:
fontSize: 19, MainAxisAlignment.start,
fontFamily: 'Montserrat', children: [
fontWeight: FontWeight.w700, Text(
height: 1.3), "welcome_title_$i".i18n,
), style: const TextStyle(
const SizedBox( color: Color(0xFF050B15),
height: 14.375), //meth fontSize: 19,
Padding( fontFamily: 'Montserrat',
padding: const EdgeInsets.only( fontWeight:
right: 20), FontWeight.w700,
child: Text( height: 1.3),
"welcome_text_$i".i18n, ),
style: const TextStyle( const SizedBox(
color: Color(0xFF050B15), height: 14.375), //meth
fontFamily: 'FigTree', Padding(
fontWeight: FontWeight.w500, padding:
fontSize: 17, const EdgeInsets.only(
height: 1.3), right: 20),
), child: Text(
), "welcome_text_$i".i18n,
], style: const TextStyle(
)), color:
const SizedBox(height: 15.625), Color(0xFF050B15),
Padding( fontFamily: 'FigTree',
padding: const EdgeInsets.only( fontWeight:
left: 16, right: 16), FontWeight.w500,
child: Image.asset( fontSize: 17,
'assets/images/showcase$i.png', height: 1.3),
fit: BoxFit.fitWidth)), ),
], ),
],
)),
const SizedBox(height: 15.625),
Padding(
padding: const EdgeInsets.only(
left: 16, right: 16),
child: Image.asset(
'assets/images/showcase$i.png'))
],
);
},
); );
}, }).toList(),
); ),
}).toList(), ],
), ),
Container(
height: 250,
width: double.infinity,
decoration: const BoxDecoration(
gradient: LinearGradient(
colors: [Color(0x00DAE4F7), Color(0xFFDAE4F7)],
stops: [0, 0.1],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: Padding(
padding: const EdgeInsets.only(top: 3),
child: Column(
children: [
SizedBox(
height: 48,
width: double.infinity,
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16),
child: FilledButton(
style: ButtonStyle(
shape: MaterialStateProperty.all<
RoundedRectangleBorder>(
const RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(12)),
))),
onPressed: () {},
child: Text(
"login".i18n,
style: const TextStyle(
fontFamily: 'Montserrat',
fontSize: 20,
fontWeight: FontWeight.w700),
)),
),
),
const SizedBox(height: 8),
],
),
),
)
// Column(
// //login buttons and ui starts here
// mainAxisAlignment: MainAxisAlignment.end,
// crossAxisAlignment: CrossAxisAlignment.end,
// children: [
// Padding(
// padding: const EdgeInsets.only(
// left: 22.0,
// right: 22.0,
// top: 0.0,
// ),
// child: AutofillGroup(
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.end,
// children: [
// // username
// Padding(
// padding:
// const EdgeInsets.only(bottom: 6.0),
// child: Row(
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Text(
// "username".i18n,
// maxLines: 1,
// style: TextStyle(
// color: AppColors.of(context)
// .loginPrimary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// Expanded(
// child: Text(
// "usernameHint".i18n,
// maxLines: 1,
// textAlign: TextAlign.right,
// style: TextStyle(
// color: AppColors.of(context)
// .loginSecondary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// ],
// ),
// ),
// Padding(
// padding:
// const EdgeInsets.only(bottom: 12.0),
// child: LoginInput(
// style: LoginInputStyle.username,
// controller: usernameController,
// ),
// ),
// // password
// Padding(
// padding:
// const EdgeInsets.only(bottom: 6.0),
// child: Row(
// mainAxisAlignment:
// MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Text(
// "password".i18n,
// maxLines: 1,
// style: TextStyle(
// color: AppColors.of(context)
// .loginPrimary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// Expanded(
// child: Text(
// "passwordHint".i18n,
// maxLines: 1,
// textAlign: TextAlign.right,
// style: TextStyle(
// color: AppColors.of(context)
// .loginSecondary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// ],
// ),
// ),
// Padding(
// padding:
// const EdgeInsets.only(bottom: 12.0),
// child: LoginInput(
// style: LoginInputStyle.password,
// controller: passwordController,
// ),
// ),
// // school
// Padding(
// padding:
// const EdgeInsets.only(bottom: 6.0),
// child: Text(
// "school".i18n,
// maxLines: 1,
// style: TextStyle(
// color: AppColors.of(context)
// .loginPrimary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// SchoolInput(
// scroll: _scrollController,
// controller: schoolController,
// ),
// ],
// ),
// ),
// ),
// Padding(
// padding: const EdgeInsets.only(
// top: 35.0,
// left: 22.0,
// right: 22.0,
// ),
// child: Visibility(
// visible: _loginState != LoginState.inProgress,
// replacement: const Padding(
// padding: EdgeInsets.symmetric(vertical: 6.0),
// child: CircularProgressIndicator(
// valueColor: AlwaysStoppedAnimation<Color>(
// Colors.white),
// ),
// ),
// child: LoginButton(
// child: Text("login".i18n,
// maxLines: 1,
// style: const TextStyle(
// fontWeight: FontWeight.bold,
// fontSize: 20.0,
// )),
// onPressed: () => _loginAPI(context: context),
// ),
// ),
// ),
// ],
// ),
], ],
) ),
// // inputs
// Padding(
// padding: const EdgeInsets.only(
// left: 22.0,
// right: 22.0,
// top: 0.0,
// ),
// child: AutofillGroup(
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// // username
// Padding(
// padding: const EdgeInsets.only(bottom: 6.0),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Text(
// "username".i18n,
// maxLines: 1,
// style: TextStyle(
// color: AppColors.of(context).loginPrimary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// Expanded(
// child: Text(
// "usernameHint".i18n,
// maxLines: 1,
// textAlign: TextAlign.right,
// style: TextStyle(
// color:
// AppColors.of(context).loginSecondary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// ],
// ),
// ),
// Padding(
// padding: const EdgeInsets.only(bottom: 12.0),
// child: LoginInput(
// style: LoginInputStyle.username,
// controller: usernameController,
// ),
// ),
// // password if (_loginState == LoginState.missingFields ||
// Padding( _loginState == LoginState.invalidGrant ||
// padding: const EdgeInsets.only(bottom: 6.0), _loginState == LoginState.failed)
// child: Row( Padding(
// mainAxisAlignment: MainAxisAlignment.spaceBetween, padding: const EdgeInsets.only(
// children: [ top: 8.0, left: 12.0, right: 12.0),
// Expanded( child: Text(
// child: Text( [
// "password".i18n, "missing_fields",
// maxLines: 1, "invalid_grant",
// style: TextStyle( "error"
// color: AppColors.of(context).loginPrimary, ][_loginState.index]
// fontWeight: FontWeight.w500, .i18n,
// fontSize: 12.0, style: const TextStyle(
// ), color: Colors.red,
// ), fontWeight: FontWeight.w500,
// ), ),
// Expanded( textAlign: TextAlign.center,
// child: Text( ),
// "passwordHint".i18n, ),
// maxLines: 1, // privacy policy
// textAlign: TextAlign.right, GestureDetector(
// style: TextStyle( onTap: () => PrivacyView.show(context),
// color: child: Text(
// AppColors.of(context).loginSecondary, 'privacy'.i18n,
// fontWeight: FontWeight.w500, style: TextStyle(
// fontSize: 12.0, color: AppColors.of(context).loginSecondary,
// ), fontWeight: FontWeight.w500,
// ), fontSize: 14.0,
// ), ),
// ], ),
// ), ),
// ),
// Padding(
// padding: const EdgeInsets.only(bottom: 12.0),
// child: LoginInput(
// style: LoginInputStyle.password,
// controller: passwordController,
// ),
// ),
// // school
// Padding(
// padding: const EdgeInsets.only(bottom: 6.0),
// child: Text(
// "school".i18n,
// maxLines: 1,
// style: TextStyle(
// color: AppColors.of(context).loginPrimary,
// fontWeight: FontWeight.w500,
// fontSize: 12.0,
// ),
// ),
// ),
// SchoolInput(
// scroll: _scrollController,
// controller: schoolController,
// ),
// ],
// ),
// ),
// ),
// // login button
// Padding(
// padding: const EdgeInsets.only(
// top: 35.0,
// left: 22.0,
// right: 22.0,
// ),
// child: Visibility(
// visible: _loginState != LoginState.inProgress,
// replacement: const Padding(
// padding: EdgeInsets.symmetric(vertical: 6.0),
// child: CircularProgressIndicator(
// valueColor:
// AlwaysStoppedAnimation<Color>(Colors.white),
// ),
// ),
// child: LoginButton(
// child: Text("login".i18n,
// maxLines: 1,
// style: const TextStyle(
// fontWeight: FontWeight.bold,
// fontSize: 20.0,
// )),
// onPressed: () => _loginAPI(context: context),
// ),
// ),
// ),
// // error messages
// if (_loginState == LoginState.missingFields ||
// _loginState == LoginState.invalidGrant ||
// _loginState == LoginState.failed)
// Padding(
// padding: const EdgeInsets.only(
// top: 8.0, left: 12.0, right: 12.0),
// child: Text(
// [
// "missing_fields",
// "invalid_grant",
// "error"
// ][_loginState.index]
// .i18n,
// style: const TextStyle(
// color: Colors.red,
// fontWeight: FontWeight.w500,
// ),
// textAlign: TextAlign.center,
// ),
// ),
// const SizedBox(height: 22.0),
// // privacy policy
// GestureDetector(
// onTap: () => PrivacyView.show(context),
// child: Text(
// 'privacy'.i18n,
// style: TextStyle(
// color: AppColors.of(context).loginSecondary,
// fontWeight: FontWeight.w500,
// fontSize: 14.0,
// ),
// ),
// ),
// const Spacer(
// flex: 1,
// ),
], ],
), ),
), ),

View File

@ -40,7 +40,7 @@ extension Localization on String {
"password": "Jelszó", "password": "Jelszó",
"passwordHint": "Születési dátum", "passwordHint": "Születési dátum",
"school": "Iskola", "school": "Iskola",
"login": "Belépés", "login": "Bejelentkezés",
"welcome": "Üdv, %s!", "welcome": "Üdv, %s!",
"missing_fields": "Hiányzó adatok!", "missing_fields": "Hiányzó adatok!",
"invalid_grant": "invalid_grant":