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

This commit is contained in:
Kima 2023-09-17 20:11:10 +02:00
commit dc93985834

View File

@ -5,7 +5,6 @@ import 'package:elegant_notification/elegant_notification.dart';
import 'package:elegant_notification/resources/arrays.dart';
import 'package:filcnaplo/api/client.dart';
import 'package:filcnaplo/api/login.dart';
import 'package:filcnaplo/theme/colors/colors.dart';
import 'package:filcnaplo_mobile_ui/screens/login/login_button.dart';
import 'package:filcnaplo_mobile_ui/screens/login/login_input.dart';
import 'package:filcnaplo_mobile_ui/screens/login/school_input/school_input.dart';
@ -14,6 +13,17 @@ import 'package:flutter/services.dart';
import 'package:flutter_acrylic/flutter_acrylic.dart';
import 'login_screen.i18n.dart';
const LinearGradient _backgroundGradient = LinearGradient(
colors: [
Color.fromARGB(255, 0, 0, 0),
Color.fromARGB(255, 23, 77, 185),
Color.fromARGB(255, 7, 42, 112),
],
begin: Alignment(-0.8, -2),
end: Alignment(0.8, 1.0),
stops: [-1.0, 0.0, 1.0],
);
class LoginScreen extends StatefulWidget {
const LoginScreen({Key? key, this.back = false}) : super(key: key);
@ -70,14 +80,20 @@ class _LoginScreenState extends State<LoginScreen> {
}
});
if (Platform.isMacOS) Window.getTitlebarHeight().then((value) => setState(() => topInset = value));
if (Platform.isMacOS) {
Window.getTitlebarHeight()
.then((value) => setState(() => topInset = value));
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.of(context).filc,
body: SafeArea(
body: Container(
decoration: BoxDecoration(
gradient: _backgroundGradient,
),
child: SafeArea(
child: Stack(
children: [
Row(
@ -91,20 +107,27 @@ class _LoginScreenState extends State<LoginScreen> {
padding: const EdgeInsets.only(bottom: 24.0),
child: ClipRect(
child: Padding(
padding: const EdgeInsets.only(left: 12.0, right: 12.0, bottom: 32.0),
padding: const EdgeInsets.only(
left: 12.0, right: 12.0, bottom: 32.0),
child: SizedBox(
width: 82.0,
height: 82.0,
width: 100.0,
height: 100.0,
// Png shadow *hack*
child: Stack(
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Opacity(child: Image.asset("assets/icons/ic_splash.png", color: Colors.black), opacity: 0.3),
child: Opacity(
child: Image.asset(
"assets/icons/ic_splash.png",
color: Colors.black),
opacity: 0.3),
),
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 6.0, sigmaY: 6.0),
child: Image.asset("assets/icons/ic_splash.png"),
filter: ImageFilter.blur(
sigmaX: 6.0, sigmaY: 6.0),
child: Image.asset(
"assets/icons/ic_splash.png"),
)
],
),
@ -124,7 +147,8 @@ class _LoginScreenState extends State<LoginScreen> {
Padding(
padding: const EdgeInsets.only(bottom: 6.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
@ -164,7 +188,8 @@ class _LoginScreenState extends State<LoginScreen> {
Padding(
padding: const EdgeInsets.only(bottom: 6.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
@ -242,19 +267,29 @@ class _LoginScreenState extends State<LoginScreen> {
padding: EdgeInsets.symmetric(vertical: 6.0),
child: Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.white),
valueColor: AlwaysStoppedAnimation<Color>(
Colors.white),
),
),
),
),
),
),
if (_loginState == LoginState.missingFields || _loginState == LoginState.invalidGrant || _loginState == LoginState.failed)
if (_loginState == LoginState.missingFields ||
_loginState == LoginState.invalidGrant ||
_loginState == LoginState.failed)
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Text(
["missing_fields", "invalid_grant", "error"][_loginState.index].i18n,
style: const TextStyle(color: Colors.red, fontWeight: FontWeight.w500),
[
"missing_fields",
"invalid_grant",
"error"
][_loginState.index]
.i18n,
style: const TextStyle(
color: Colors.red,
fontWeight: FontWeight.w500),
),
),
],
@ -276,6 +311,7 @@ class _LoginScreenState extends State<LoginScreen> {
],
),
),
),
);
}
@ -283,7 +319,9 @@ class _LoginScreenState extends State<LoginScreen> {
String username = usernameController.text;
String password = passwordController.text;
if (username == "" || password == "" || schoolController.selectedSchool == null) {
if (username == "" ||
password == "" ||
schoolController.selectedSchool == null) {
return setState(() => _loginState = LoginState.missingFields);
}
@ -313,7 +351,8 @@ class _LoginScreenState extends State<LoginScreen> {
).show(context);
},
onSuccess: () {
Navigator.of(context).pushNamedAndRemoveUntil("login_to_navigation", (_) => false);
Navigator.of(context)
.pushNamedAndRemoveUntil("login_to_navigation", (_) => false);
}).then((res) => setState(() => _loginState = res));
}
}