import 'package:flutter/material.dart'; import 'package:mensaapp/providers/ambienteProvider.dart'; import 'package:mensaapp/providers/anmerkungProvider.dart'; import 'package:mensaapp/providers/essenProvider.dart'; import 'package:mensaapp/providers/languageProvider.dart'; import 'package:mensaapp/providers/pageProvider.dart'; import 'package:mensaapp/providers/serviceProvider.dart'; import 'package:mensaapp/providers/spaceProvider.dart'; import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart'; import 'package:provider/provider.dart'; import 'dart:async'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider( create: (context) => PageProvider(), ), ChangeNotifierProvider( create: (context) => EssenProvider(), ), ChangeNotifierProvider( create: (context) => ServiceProvider(), ), ChangeNotifierProvider( create: (context) => AmbienteProvider(), ), ChangeNotifierProvider( create: (context) => AnmerkungProvider(), ), ChangeNotifierProvider( create: (context) => SpezielleErnaehrungProvider(), ), ChangeNotifierProvider( create: (context) => LanguageProvider(), ), ChangeNotifierProvider( create: (context) => SpaceProvider(), ) ], child: MaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData( colorScheme: const ColorScheme( primary: Color.fromRGBO(236, 92, 61, 1), onPrimary: Color.fromRGBO(240, 240, 240, 1), secondary: Color.fromRGBO(203, 203, 203, 1), onSecondary: Color.fromRGBO(60, 60, 60, 1), error: Colors.red, onError: Colors.white, surface: Colors.white, onSurface: Color.fromRGBO(60, 60, 60, 1), brightness: Brightness.light, tertiary: Color.fromRGBO(251, 216, 17, 1), onTertiary: Color.fromRGBO(60, 60, 60, 1)), useMaterial3: true, ), home: const MyHome()), ); } } var lastTimeClick = DateTime.now(); var secondsTimeOut = 240; var popupOpen = false; void _showTimeOverDialog(BuildContext context) { popupOpen = true; showDialog( context: context, builder: (context) { return AlertDialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), title: Text( Provider.of(context, listen: false) .languageData[Provider.of(context, listen: false).language]["general"]["timeOutTitle"], style: TextStyle(fontSize: 25), ), content: Text( Provider.of(context, listen: false) .languageData[Provider.of(context, listen: false).language]["general"]["timeOutContent"], style: TextStyle(fontSize: 20), ), actions: [ FilledButton( child: Text( Provider.of(context, listen: false) .languageData[Provider.of(context, listen: false).language]["general"]["timeOutButton"], style: TextStyle(fontSize: 17), ), onPressed: () { lastTimeClick = DateTime.now(); popupOpen = false; Navigator.of(context).pop(); }, ) ], ); }, ); } class MyHome extends StatelessWidget { const MyHome({super.key}); @override Widget build(BuildContext context) { Timer.periodic( const Duration(seconds: 5), (timer) { var clickDiff = DateTime.now().difference(lastTimeClick).inSeconds; if (clickDiff >= secondsTimeOut && Provider.of(context, listen: false).selectedSpace == 1) { Navigator.of(context).pop(); Provider.of(context, listen: false) .resetAllFields(); Provider.of(context, listen: false) .resetAllFields(); Provider.of(context, listen: false) .resetAllFields(); Provider.of(context, listen: false) .resetAllFields(); Provider.of(context, listen: false) .resetAllFields(); Provider.of(context, listen: false) .resetSelectedEssen(); Provider.of(context, listen: false) .setSelectedSpace(0); Provider.of(context, listen: false) .setLanguage("de"); } else if (clickDiff >= secondsTimeOut - 30 && Provider.of(context, listen: false).selectedSpace == 1) { if (!popupOpen) { _showTimeOverDialog(context); } } if (Provider.of(context, listen: false).selectedSpace == 0) { popupOpen = false; } }, ); return Consumer(builder: (context, spaceProvider, child) { return Listener( onPointerDown: (event) { lastTimeClick = DateTime.now(); }, child: spaceProvider.spaces[spaceProvider.selectedSpace], ); }); } }