import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'package:provider/provider.dart'; import '../../api/marianumcloud/talk/room/getRoom.dart'; import '../../api/marianumcloud/talk/room/getRoomParams.dart'; import '../../model/accountData.dart'; import '../../model/accountModel.dart'; class Login extends StatefulWidget { const Login({Key? key}) : super(key: key); @override State createState() => _LoginState(); } class _LoginState extends State { bool displayDisclaimerText = true; String? _checkInput(value){ return (value ?? "").length == 0 ? "Eingabe erforderlich" : null; } Future _login(LoginData data) async { await AccountData().removeData(); try { await AccountData().setData(data.name.toLowerCase(), data.password); await GetRoom( GetRoomParams( includeStatus: false, ), ).run().then((value) async { await AccountData().setData(data.name.toLowerCase(), data.password); setState(() { displayDisclaimerText = false; }); }); } catch(e) { await AccountData().removeData(); log(e.toString()); return "Benutzername oder Password falsch! (${e.toString()})"; } await Future.delayed(const Duration(seconds: 1)); return null; } Future _resetPassword(String name) { return Future.delayed(Duration.zero).then((_) { return "Diese Funktion steht nicht zur Verfügung!"; }); } @override Widget build(BuildContext context) { return FlutterLogin( logo: Image.asset("assets/logo/icon.png").image, userValidator: _checkInput, passwordValidator: _checkInput, onSubmitAnimationCompleted: () => Provider.of(context, listen: false).setState(AccountModelState.loggedIn), onLogin: _login, onSignup: null, onRecoverPassword: _resetPassword, hideForgotPasswordButton: true, theme: LoginTheme( primaryColor: Theme.of(context).primaryColor, accentColor: Colors.white, errorColor: Theme.of(context).primaryColor, footerBottomPadding: 10, textFieldStyle: const TextStyle( fontWeight: FontWeight.w500 ), cardTheme: const CardTheme( elevation: 10, ), ), messages: LoginMessages( loginButton: "Anmelden", userHint: "Nutzername", passwordHint: "Passwort", ), disableCustomPageTransformer: true, headerWidget: Padding( padding: const EdgeInsets.only(bottom: 30), child: Center( child: Visibility( visible: displayDisclaimerText, child: const Text( "Dies ist ein Inoffizieller Nextcloud & Webuntis Client und wird nicht vom Marianum selbst betrieben.\nKeinerlei Gewähr für Vollständigkeit, Richtigkeit und Aktualität!", textAlign: TextAlign.center, ), ), ), ), footer: "Marianum Fulda - Die persönliche Schule", title: "Marianum Fulda", userType: LoginUserType.name, ); } }