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:flutter/material.dart';
|
||||||
import 'package:google_nav_bar/google_nav_bar.dart';
|
|
||||||
import 'package:mensaapp/providers/ambienteProvider.dart';
|
import 'package:mensaapp/providers/ambienteProvider.dart';
|
||||||
import 'package:mensaapp/providers/anmerkungProvider.dart';
|
import 'package:mensaapp/providers/anmerkungProvider.dart';
|
||||||
import 'package:mensaapp/providers/essenProvider.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/spaceProvider.dart';
|
||||||
import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart';
|
import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'dart:convert';
|
import 'dart:async';
|
||||||
import 'package:flutter/services.dart' show rootBundle;
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
runApp(const MyApp());
|
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 {
|
class MyHome extends StatelessWidget {
|
||||||
const MyHome({super.key});
|
const MyHome({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Consumer<SpaceProvider>(
|
Timer.periodic(
|
||||||
builder: (context, spaceProvider, child) {
|
const Duration(seconds: 5),
|
||||||
return spaceProvider.spaces[spaceProvider.selectedSpace];
|
(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],
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,52 +4,44 @@ import 'package:flutter/services.dart';
|
|||||||
|
|
||||||
class LanguageProvider extends ChangeNotifier {
|
class LanguageProvider extends ChangeNotifier {
|
||||||
Map<String, dynamic> languageData = {
|
Map<String, dynamic> languageData = {
|
||||||
"de":
|
"de": {
|
||||||
{
|
"general": {
|
||||||
"textfield": "Dein Feedback",
|
"timeOutTitle": "Bist du noch da?",
|
||||||
"pageAmbiente":
|
"timeOutContent": "In 30 Sekunden wird deine Bewertung verworfen",
|
||||||
{
|
"timeOutButton": "Ich bin da!"
|
||||||
|
},
|
||||||
|
"textfield": "Dein Feedback",
|
||||||
|
"pageAmbiente": {
|
||||||
"question1": "Frage1",
|
"question1": "Frage1",
|
||||||
"question2": "Frage2",
|
"question2": "Frage2",
|
||||||
},
|
},
|
||||||
"pageAnmerkungen":
|
"pageAnmerkungen": {
|
||||||
{
|
|
||||||
"question1": "Frage1",
|
"question1": "Frage1",
|
||||||
"question2": "Frage2",
|
"question2": "Frage2",
|
||||||
},
|
},
|
||||||
"pageEssen":
|
"pageEssen": {
|
||||||
{
|
|
||||||
"question1": "Geschmack",
|
"question1": "Geschmack",
|
||||||
"question2": "Qualität",
|
"question2": "Qualität",
|
||||||
},
|
},
|
||||||
"pageHome":
|
"pageHome": {
|
||||||
{
|
|
||||||
"noTimePopupTitle": "Du kannst gerade nicht bewerten!",
|
"noTimePopupTitle": "Du kannst gerade nicht bewerten!",
|
||||||
"noTimePopupContent": "Du kannst nur zu den Essenszeiten zwischen 11:30 und 14:30 bewerten!",
|
"noTimePopupContent":
|
||||||
|
"Du kannst nur zu den Essenszeiten zwischen 11:30 und 14:30 bewerten!",
|
||||||
"noTimePopupButton": "OK"
|
"noTimePopupButton": "OK"
|
||||||
},
|
},
|
||||||
"pageService":
|
"pageService": {
|
||||||
{
|
|
||||||
"question1": "Frage1",
|
"question1": "Frage1",
|
||||||
"question2": "Frage2",
|
"question2": "Frage2",
|
||||||
},
|
},
|
||||||
"pageSpecial":
|
"pageSpecial": {
|
||||||
{
|
|
||||||
"question1": "Frage1",
|
"question1": "Frage1",
|
||||||
"question2": "Frage2",
|
"question2": "Frage2",
|
||||||
},
|
},
|
||||||
"navBar":
|
"navBar": {"0": "Essen", "1": "Service", "2": "Essenswünsche"},
|
||||||
{
|
"floating": {
|
||||||
"0": "Essen",
|
|
||||||
"1": "Service",
|
|
||||||
"2": "Essenswünsche"
|
|
||||||
},
|
|
||||||
"floating":
|
|
||||||
{
|
|
||||||
"info": "* Pflichtfeld",
|
"info": "* Pflichtfeld",
|
||||||
"return": "Absenden",
|
"return": "Absenden",
|
||||||
"delete":
|
"delete": {
|
||||||
{
|
|
||||||
"title": "Bewertungen löschen",
|
"title": "Bewertungen löschen",
|
||||||
"info": "Möchtest du alle Eingaben entfernen?",
|
"info": "Möchtest du alle Eingaben entfernen?",
|
||||||
"keep": "Behalten",
|
"keep": "Behalten",
|
||||||
@@ -57,10 +49,14 @@ class LanguageProvider extends ChangeNotifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"en":
|
"en": {
|
||||||
{
|
"general": {
|
||||||
"textfield": "Your Feedback",
|
"timeOutTitle": "Are you still there?",
|
||||||
"pageAmbiente": {
|
"timeOutContent": "Your assessment will be discarded in 30 seconds",
|
||||||
|
"timeOutButton": "I'm here!"
|
||||||
|
},
|
||||||
|
"textfield": "Your Feedback",
|
||||||
|
"pageAmbiente": {
|
||||||
"question1": "Question1",
|
"question1": "Question1",
|
||||||
"question2": "Question2",
|
"question2": "Question2",
|
||||||
},
|
},
|
||||||
@@ -74,7 +70,8 @@ class LanguageProvider extends ChangeNotifier {
|
|||||||
},
|
},
|
||||||
"pageHome": {
|
"pageHome": {
|
||||||
"noTimePopupTitle": "You cannot rate right now!",
|
"noTimePopupTitle": "You cannot rate right now!",
|
||||||
"noTimePopupContent": "You can only rate during meal times between 11:30 AM and 2:30 PM!",
|
"noTimePopupContent":
|
||||||
|
"You can only rate during meal times between 11:30 AM and 2:30 PM!",
|
||||||
"noTimePopupButton": "OK"
|
"noTimePopupButton": "OK"
|
||||||
},
|
},
|
||||||
"pageService": {
|
"pageService": {
|
||||||
@@ -85,16 +82,11 @@ class LanguageProvider extends ChangeNotifier {
|
|||||||
"question1": "Question1",
|
"question1": "Question1",
|
||||||
"question2": "Question2",
|
"question2": "Question2",
|
||||||
},
|
},
|
||||||
"navBar": {
|
"navBar": {"0": "Food", "1": "Service", "2": "Food Requests"},
|
||||||
"0": "Food",
|
|
||||||
"1": "Service",
|
|
||||||
"2": "Food Requests"
|
|
||||||
},
|
|
||||||
"floating": {
|
"floating": {
|
||||||
"info": "* Required field",
|
"info": "* Required field",
|
||||||
"return": "Submit",
|
"return": "Submit",
|
||||||
"delete":
|
"delete": {
|
||||||
{
|
|
||||||
"title": "Delete Reviews",
|
"title": "Delete Reviews",
|
||||||
"info": "Do you want to remove all entries?",
|
"info": "Do you want to remove all entries?",
|
||||||
"keep": "Keep",
|
"keep": "Keep",
|
||||||
@@ -102,10 +94,14 @@ class LanguageProvider extends ChangeNotifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fr":
|
"fr": {
|
||||||
{
|
"general": {
|
||||||
"textfield": "Votre avis",
|
"timeOutTitle": "Êtes-vous toujours là ?",
|
||||||
"pageAmbiente": {
|
"timeOutContent": "Votre évaluation sera supprimée dans 30 secondes",
|
||||||
|
"timeOutButton": "Je suis là !"
|
||||||
|
},
|
||||||
|
"textfield": "Votre avis",
|
||||||
|
"pageAmbiente": {
|
||||||
"question1": "Question1",
|
"question1": "Question1",
|
||||||
"question2": "Question2",
|
"question2": "Question2",
|
||||||
},
|
},
|
||||||
@@ -119,7 +115,8 @@ class LanguageProvider extends ChangeNotifier {
|
|||||||
},
|
},
|
||||||
"pageHome": {
|
"pageHome": {
|
||||||
"noTimePopupTitle": "Vous ne pouvez pas évaluer pour le moment !",
|
"noTimePopupTitle": "Vous ne pouvez pas évaluer pour le moment !",
|
||||||
"noTimePopupContent": "Vous ne pouvez évaluer que pendant les heures de repas entre 11h30 et 14h30 !",
|
"noTimePopupContent":
|
||||||
|
"Vous ne pouvez évaluer que pendant les heures de repas entre 11h30 et 14h30 !",
|
||||||
"noTimePopupButton": "D'ACCORD"
|
"noTimePopupButton": "D'ACCORD"
|
||||||
},
|
},
|
||||||
"pageService": {
|
"pageService": {
|
||||||
|
|||||||
Reference in New Issue
Block a user