Add demo mode functionality to KretenLoginWidget and integrate with LoginScreen

This commit is contained in:
2026-03-16 13:44:33 +01:00
parent 446988ec0b
commit 2ece6bd36f
2 changed files with 19 additions and 2 deletions

View File

@@ -24,10 +24,11 @@ import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
class KretenLoginWidget extends StatefulWidget { class KretenLoginWidget extends StatefulWidget {
const KretenLoginWidget({super.key, required this.onLogin}); const KretenLoginWidget({super.key, required this.onLogin, this.onDemoMode});
// final String selectedSchool; // final String selectedSchool;
final void Function(String code) onLogin; final void Function(String code) onLogin;
final VoidCallback? onDemoMode;
@override @override
State<KretenLoginWidget> createState() => _KretenLoginWidgetState(); State<KretenLoginWidget> createState() => _KretenLoginWidgetState();
@@ -259,6 +260,13 @@ class _KretenLoginWidgetState extends State<KretenLoginWidget>
icon: const Icon(Icons.refresh), icon: const Icon(Icons.refresh),
label: const Text('Próbáld újra'), label: const Text('Próbáld újra'),
), ),
if (widget.onDemoMode != null) ...[
const SizedBox(height: 12),
OutlinedButton(
onPressed: widget.onDemoMode,
child: const Text('Kipróbálom fiók nélkül'),
),
],
const SizedBox(height: 12), const SizedBox(height: 12),
TextButton( TextButton(
onPressed: () => Navigator.of(context).pop(), onPressed: () => Navigator.of(context).pop(),

View File

@@ -279,7 +279,7 @@ class LoginScreenState extends State<LoginScreen> {
context: context, context: context,
isScrollControlled: isScrollControlled:
true, // This ensures the modal accommodates input fields properly true, // This ensures the modal accommodates input fields properly
builder: (BuildContext context) { builder: (BuildContext sheetContext) {
return Container( return Container(
height: MediaQuery.of(context) height: MediaQuery.of(context)
.size .size
@@ -355,6 +355,15 @@ class LoginScreenState extends State<LoginScreen> {
context) context)
.pop(); .pop();
}, },
onDemoMode: () {
Navigator.of(context).pop();
final userProvider = Provider.of<UserProvider>(context, listen: false);
final demoUser = User.demo();
userProvider.addUser(demoUser);
userProvider.setUser(demoUser.id);
setSystemChrome(context);
Navigator.of(context).pushReplacementNamed('login_to_navigation');
},
), ),
), ),
), ),