timeout nach 240 sekunden
30 sekunden vorher kommt ein popup, wenn nciht bestätigt, löschen, popup kommt nur wenn keine interaktion mit dem tablet erfolgt
This commit is contained in:
+85
-9
@@ -1,7 +1,4 @@
|
||||
import 'dart:ffi';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_nav_bar/google_nav_bar.dart';
|
||||
import 'package:mensaapp/providers/ambienteProvider.dart';
|
||||
import 'package:mensaapp/providers/anmerkungProvider.dart';
|
||||
import 'package:mensaapp/providers/essenProvider.dart';
|
||||
@@ -11,8 +8,7 @@ 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:convert';
|
||||
import 'package:flutter/services.dart' show rootBundle;
|
||||
import 'dart:async';
|
||||
|
||||
void main() {
|
||||
runApp(const MyApp());
|
||||
@@ -73,15 +69,95 @@ class MyApp extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
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<LanguageProvider>(context, listen: false)
|
||||
.languageData[Provider.of<LanguageProvider>(context, listen: false).language]["general"]["timeOutTitle"],
|
||||
style: TextStyle(fontSize: 25),
|
||||
),
|
||||
content: Text(
|
||||
Provider.of<LanguageProvider>(context, listen: false)
|
||||
.languageData[Provider.of<LanguageProvider>(context, listen: false).language]["general"]["timeOutContent"],
|
||||
style: TextStyle(fontSize: 20),
|
||||
),
|
||||
actions: [
|
||||
FilledButton(
|
||||
child: Text(
|
||||
Provider.of<LanguageProvider>(context, listen: false)
|
||||
.languageData[Provider.of<LanguageProvider>(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) {
|
||||
return Consumer<SpaceProvider>(
|
||||
builder: (context, spaceProvider, child) {
|
||||
return spaceProvider.spaces[spaceProvider.selectedSpace];
|
||||
}
|
||||
Timer.periodic(
|
||||
const Duration(seconds: 5),
|
||||
(timer) {
|
||||
var clickDiff = DateTime.now().difference(lastTimeClick).inSeconds;
|
||||
if (clickDiff >= secondsTimeOut && Provider.of<SpaceProvider>(context, listen: false).selectedSpace == 1) {
|
||||
Navigator.of(context).pop();
|
||||
Provider.of<AnmerkungProvider>(context, listen: false)
|
||||
.resetAllFields();
|
||||
Provider.of<EssenProvider>(context, listen: false)
|
||||
.resetAllFields();
|
||||
Provider.of<AmbienteProvider>(context, listen: false)
|
||||
.resetAllFields();
|
||||
Provider.of<ServiceProvider>(context, listen: false)
|
||||
.resetAllFields();
|
||||
Provider.of<SpezielleErnaehrungProvider>(context, listen: false)
|
||||
.resetAllFields();
|
||||
Provider.of<PageProvider>(context, listen: false)
|
||||
.resetSelectedEssen();
|
||||
Provider.of<SpaceProvider>(context, listen: false)
|
||||
.setSelectedSpace(0);
|
||||
Provider.of<LanguageProvider>(context, listen: false)
|
||||
.setLanguage("de");
|
||||
} else if (clickDiff >= secondsTimeOut - 30 && Provider.of<SpaceProvider>(context, listen: false).selectedSpace == 1) {
|
||||
if (!popupOpen) {
|
||||
_showTimeOverDialog(context);
|
||||
}
|
||||
}
|
||||
|
||||
if (Provider.of<SpaceProvider>(context, listen: false).selectedSpace == 0) {
|
||||
popupOpen = false;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
return Consumer<SpaceProvider>(builder: (context, spaceProvider, child) {
|
||||
return Listener(
|
||||
onPointerDown: (event) {
|
||||
lastTimeClick = DateTime.now();
|
||||
},
|
||||
child: spaceProvider.spaces[spaceProvider.selectedSpace],
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user