import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_login/flutter_login.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../data/accountModel.dart'; class Login extends StatefulWidget { const Login({Key? key}) : super(key: key); @override State<Login> createState() => _LoginState(); } class _LoginState extends State<Login> { Duration get loginTime => const Duration(milliseconds: 2250); final Future<SharedPreferences> _storage = SharedPreferences.getInstance(); String? checkInput(value){ return (value ?? "").length < 5 ? "Eingabe zu kurz" : null; } @override Widget build(BuildContext context) { return FlutterLogin( logo: Image.file(File("assets/logo/icon.png")).image, userValidator: checkInput, passwordValidator: checkInput, onLogin: _authUser, onSignup: null, onRecoverPassword: _recoverPassword, theme: LoginTheme( primaryColor: Theme.of(context).primaryColor, cardTheme: const CardTheme( elevation: 10, shape: InputBorder.none, ), ), messages: LoginMessages( loginButton: "Anmelden", userHint: "Nutzername", passwordHint: "Passwort", ), disableCustomPageTransformer: true, headerWidget: const Padding( padding: EdgeInsets.only(bottom: 10), child: Center( child: Text( "Dies ist ein Inoffizieller Nextclient & Webuntis Client und wird nicht vom Marianum selbst betrieben.\nBitte bedenke, dass deine persönlichen Anmelde & Infodaten durch dritte, nicht vom Marianum betriebene, Systeme geleitet werden!", textAlign: TextAlign.center, ), ), ), footer: "Marianum Fulda - Die persönliche Schule!", title: "Marianum", hideForgotPasswordButton: true, userType: LoginUserType.name, ); } Future<String?> _authUser(LoginData data) async { final SharedPreferences preferences = await _storage; preferences.setBool("loggedIn", true); preferences.setString("username", data.name); preferences.setString("password", data.password); debugPrint('Name: ${data.name}, Password: ${data.password}'); return Future.delayed(loginTime).then((_) { Provider.of<AccountModel>(context, listen: false).login(); return null; }); } Future<String> _recoverPassword(String name) { return Future.delayed(loginTime).then((_) { return "Diese Funktion steht nicht zur Verfügung!"; }); } }