Backend Structure implemented All Ratings will be pulled and validated Pop Up notfies user about all his ratings If confirmed, data will be send to the supabase server (if any data was found) No comments were made, who else needs to read this?
171 lines
4.8 KiB
Dart
171 lines
4.8 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:mensaapp/providers/languageProvider.dart';
|
|
import 'package:mensaapp/providers/spaceProvider.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
class SpaceHome extends StatefulWidget {
|
|
const SpaceHome({super.key});
|
|
|
|
@override
|
|
State<SpaceHome> createState() => _SpaceHomeState();
|
|
}
|
|
|
|
class _SpaceHomeState extends State<SpaceHome> {
|
|
//TODO: in languageProvider
|
|
var tempTexts = [
|
|
"Bewerte jetzt deine DHBW-Kantine...",
|
|
"Rate your DHBW canteen now...",
|
|
"Évaluez votre cantine DHBW maintenant..."
|
|
];
|
|
|
|
//TODO: END-TODO
|
|
|
|
late Timer _timer;
|
|
late String text = "";
|
|
var index = 1;
|
|
|
|
var indexMap = {0: "fr", 1: "de", 2: "en"};
|
|
|
|
@override
|
|
void initState() {
|
|
text = tempTexts[0];
|
|
super.initState();
|
|
_timer = Timer.periodic(
|
|
const Duration(seconds: 5),
|
|
(timer) {
|
|
setState(() {
|
|
text = tempTexts[index];
|
|
index = (index + 1 >= tempTexts.length ? 0 : index + 1);
|
|
});
|
|
},
|
|
);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_timer.cancel();
|
|
super.dispose();
|
|
}
|
|
|
|
// only for test
|
|
var disableRateTimeDebug = true;
|
|
|
|
// end only for test
|
|
void _showNotRateTimeDialog(BuildContext context) {
|
|
showDialog(
|
|
context: context,
|
|
builder: (context) {
|
|
return AlertDialog(
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(20),
|
|
),
|
|
title: Text(
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.languageData[indexMap[index]]["pageHome"]["noTimePopupTitle"],
|
|
style: TextStyle(fontSize: 25),
|
|
),
|
|
content: Text(
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.languageData[indexMap[index]]["pageHome"]
|
|
["noTimePopupContent"],
|
|
style: TextStyle(fontSize: 20),
|
|
),
|
|
actions: [
|
|
FilledButton(
|
|
child: Text(
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.languageData[indexMap[index]]["pageHome"]
|
|
["noTimePopupButton"],
|
|
style: TextStyle(fontSize: 17),
|
|
),
|
|
onPressed: () {
|
|
if (disableRateTimeDebug) {
|
|
Provider.of<SpaceProvider>(context, listen: false)
|
|
.setSelectedSpace(1);
|
|
}
|
|
Navigator.of(context).pop();
|
|
},
|
|
)
|
|
],
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: GestureDetector(
|
|
onTap: () {
|
|
var now = TimeOfDay.now();
|
|
int startHour = 11;
|
|
int endHour = 14;
|
|
|
|
if (now.hour == startHour && now.minute <= 30 ||
|
|
now.hour < startHour ||
|
|
now.hour == endHour && now.minute >= 30 ||
|
|
now.hour >= endHour + 1) {
|
|
_showNotRateTimeDialog(context);
|
|
} else {
|
|
Provider.of<SpaceProvider>(context, listen: false)
|
|
.setSelectedSpace(1);
|
|
}
|
|
},
|
|
child: Stack(
|
|
children: [
|
|
Center(
|
|
child: Container(
|
|
width: 1600,
|
|
height: 750,
|
|
decoration: BoxDecoration(
|
|
image: DecorationImage(
|
|
image: AssetImage("assets/backgrounds/Essen.jpg"),
|
|
fit: BoxFit.cover, // Deckt den gesamten Bildschirm ab
|
|
colorFilter: ColorFilter.mode(
|
|
Colors.white.withOpacity(0.2),
|
|
BlendMode.dstATop,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
Center(
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: [
|
|
Text(
|
|
text,
|
|
textAlign: TextAlign.center,
|
|
style: TextStyle(
|
|
fontSize: 70,
|
|
fontWeight: FontWeight.bold,
|
|
color: Theme.of(context).colorScheme.primary),
|
|
),
|
|
const SizedBox(
|
|
height: 40,
|
|
),
|
|
Icon(
|
|
Icons.touch_app,
|
|
size: 150,
|
|
color: Colors.black.withOpacity(0.5),
|
|
),
|
|
SizedBox(
|
|
height: 50,
|
|
),
|
|
Text(
|
|
"11:30 - 14:30",
|
|
style: TextStyle(fontSize: 40),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|