import 'package:flutter/material.dart'; import 'package:listenmeister/main.dart'; class LoginPage extends StatefulWidget { const LoginPage({super.key}); @override State createState() => _LoginPageState(); } class _LoginPageState extends State { final TextEditingController _emailCtl = TextEditingController(); final TextEditingController _pwCtl = TextEditingController(); bool _isRegister = false; bool _loading = false; String? _error; Future _submit() async { setState(() { _loading = true; _error = null; }); try { final String email = _emailCtl.text.trim(); final String password = _pwCtl.text.trim(); if (_isRegister) { await apiService.register(email, password); } else { await apiService.login(email, password); } } catch (e) { setState(() => _error = e.toString()); } finally { if (mounted) { setState(() => _loading = false); } } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(_isRegister ? 'Registrierung' : 'Login')), body: Padding( padding: const EdgeInsets.all(16), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ TextField( controller: _emailCtl, decoration: const InputDecoration(labelText: 'Email'), keyboardType: TextInputType.emailAddress, ), const SizedBox(height: 8), TextField( controller: _pwCtl, decoration: const InputDecoration(labelText: 'Passwort'), obscureText: true, ), const SizedBox(height: 20), if (_error != null) ...[ Text( _error!, style: TextStyle(color: Theme.of(context).colorScheme.error), ), const SizedBox(height: 12), ], ElevatedButton( onPressed: _loading ? null : _submit, child: _loading ? const CircularProgressIndicator() : Text(_isRegister ? 'Registrieren' : 'Einloggen'), ), TextButton( onPressed: _loading ? null : () => setState(() => _isRegister = !_isRegister), child: Text( _isRegister ? 'Ich habe schon ein Konto' : 'Neu registrieren', ), ), ], ), ), ); } }