269 lines
10 KiB
Dart
269 lines
10 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:google_nav_bar/google_nav_bar.dart';
|
|
import 'package:mensaapp/providers/spaceProvider.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import '../providers/ambienteProvider.dart';
|
|
import '../providers/anmerkungProvider.dart';
|
|
import '../providers/essenProvider.dart';
|
|
import '../providers/languageProvider.dart';
|
|
import '../providers/pageProvider.dart';
|
|
import '../providers/serviceProvider.dart';
|
|
import '../providers/spezielleErnaehrungProvider.dart';
|
|
|
|
class SpaceRate extends StatelessWidget {
|
|
const SpaceRate({super.key});
|
|
|
|
void _showDeleteDialog(BuildContext context) {
|
|
showDialog(
|
|
context: context,
|
|
builder: (BuildContext 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]["floating"]["delete"]["title"]),
|
|
content: Text(
|
|
Provider.of<LanguageProvider>(context, listen: false).languageData[
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.language]["floating"]["delete"]["info"],
|
|
style: const TextStyle(fontSize: 18),
|
|
),
|
|
actions: [
|
|
ElevatedButton(
|
|
onPressed: () {
|
|
Navigator.of(context).pop();
|
|
},
|
|
style: ElevatedButton.styleFrom(
|
|
backgroundColor: Theme.of(context).colorScheme.secondary),
|
|
child: Text(Provider.of<LanguageProvider>(context, listen: false)
|
|
.languageData[
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.language]["floating"]["delete"]["keep"]),
|
|
),
|
|
ElevatedButton(
|
|
onPressed: () {
|
|
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");
|
|
|
|
// Hier Aktion für Löschen ausführen
|
|
Navigator.of(context).pop(); // Dialog schließen
|
|
},
|
|
child: Text(Provider.of<LanguageProvider>(context, listen: false)
|
|
.languageData[
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.language]["floating"]["delete"]["del"]),
|
|
)
|
|
],
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Consumer<LanguageProvider>(builder: (context, languageProvider, x) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
leading: IconButton(
|
|
icon: Icon(
|
|
Icons.home,
|
|
size: 36,
|
|
color: Theme.of(context).colorScheme.onPrimary,
|
|
),
|
|
onPressed: () {
|
|
_showDeleteDialog(context);
|
|
},
|
|
),
|
|
title: Consumer<PageProvider>(
|
|
// Consumer verwenden, um den dynamischen Titel anzuzeigen
|
|
builder: (context, pageProvider, child) {
|
|
return Container(
|
|
height: 40,
|
|
decoration: BoxDecoration(
|
|
color: Theme.of(context).colorScheme.primaryContainer,
|
|
borderRadius: BorderRadius.circular(15),
|
|
),
|
|
alignment: Alignment.centerLeft,
|
|
child: Text(
|
|
languageProvider.languageData[
|
|
Provider.of<LanguageProvider>(context).language]
|
|
["navBar"][pageProvider.selectedPage.toString()],
|
|
// Hier wird der dynamische Titel angezeigt
|
|
style: TextStyle(
|
|
color: Theme.of(context).colorScheme.onPrimary,
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
backgroundColor: Theme.of(context).colorScheme.primary,
|
|
actions: [
|
|
IconButton(
|
|
icon: Opacity(
|
|
opacity: Provider.of<LanguageProvider>(context).language == "de"
|
|
? 1.0 // Voll sichtbar
|
|
: 0.4, // Halb durchsichtig
|
|
child: Image.asset(
|
|
'assets/flags/de.png',
|
|
width: 34,
|
|
height: 24,
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
onPressed: () {
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.setLanguage("de");
|
|
},
|
|
),
|
|
IconButton(
|
|
icon: Opacity(
|
|
opacity: Provider.of<LanguageProvider>(context).language == "en"
|
|
? 1.0 // Voll sichtbar
|
|
: 0.4, // Halb durchsichtig
|
|
child: Image.asset(
|
|
'assets/flags/en.png',
|
|
width: 34,
|
|
height: 24,
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
onPressed: () {
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.setLanguage("en");
|
|
},
|
|
),
|
|
IconButton(
|
|
icon: Opacity(
|
|
opacity: Provider.of<LanguageProvider>(context).language == "fr"
|
|
? 1.0 // Voll sichtbar
|
|
: 0.4, // Halb durchsichtig
|
|
child: Image.asset(
|
|
'assets/flags/fr.png',
|
|
width: 34,
|
|
height: 24,
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
onPressed: () {
|
|
Provider.of<LanguageProvider>(context, listen: false)
|
|
.setLanguage("fr");
|
|
},
|
|
),
|
|
],
|
|
),
|
|
body: Consumer<PageProvider>(
|
|
builder: (context, pageProvider, child) {
|
|
return Stack(
|
|
children: [
|
|
pageProvider.pages[pageProvider.selectedPage],
|
|
Positioned(
|
|
left: 10,
|
|
bottom: 10,
|
|
child: IconButton.filled(
|
|
padding: const EdgeInsets.all(15),
|
|
onPressed: () {
|
|
_showDeleteDialog(context); // Dialog anzeigen
|
|
},
|
|
icon: const Icon(
|
|
Icons.delete,
|
|
size: 30,
|
|
),
|
|
style: ButtonStyle(
|
|
shape: WidgetStateProperty.all(RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(17))),
|
|
backgroundColor: WidgetStateProperty.all(
|
|
Theme.of(context).colorScheme.primary,
|
|
),
|
|
),
|
|
),
|
|
)
|
|
],
|
|
);
|
|
},
|
|
),
|
|
floatingActionButton: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
Text(
|
|
Provider.of<LanguageProvider>(context).languageData[
|
|
Provider.of<LanguageProvider>(context).language]
|
|
["floating"]["info"],
|
|
style: TextStyle(fontSize: 15),
|
|
),
|
|
const SizedBox(
|
|
height: 10,
|
|
),
|
|
FloatingActionButton.extended(
|
|
onPressed: () {},
|
|
label: Text(
|
|
Provider.of<LanguageProvider>(context).languageData[
|
|
Provider.of<LanguageProvider>(context).language]
|
|
["floating"]["return"],
|
|
style: TextStyle(fontSize: 20),
|
|
),
|
|
icon: const Icon(Icons.send),
|
|
)
|
|
],
|
|
),
|
|
bottomNavigationBar: Container(
|
|
color: Theme.of(context).colorScheme.secondary,
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(5),
|
|
child: GNav(
|
|
onTabChange: (index) {
|
|
Provider.of<PageProvider>(context, listen: false)
|
|
.changePage(index);
|
|
},
|
|
gap: 8,
|
|
style: GnavStyle.google,
|
|
backgroundColor: Colors.transparent,
|
|
color: Theme.of(context).colorScheme.onSurface,
|
|
activeColor: Theme.of(context).colorScheme.onPrimary,
|
|
tabBackgroundColor: Theme.of(context).colorScheme.primary,
|
|
tabs: [
|
|
GButton(
|
|
icon: Icons.fastfood_outlined,
|
|
text: Provider.of<LanguageProvider>(context).languageData[
|
|
Provider.of<LanguageProvider>(context).language]
|
|
["navBar"]["0"],
|
|
),
|
|
GButton(
|
|
icon: Icons.mood,
|
|
text: Provider.of<LanguageProvider>(context).languageData[
|
|
Provider.of<LanguageProvider>(context).language]
|
|
["navBar"]["2"],
|
|
),
|
|
GButton(
|
|
icon: Icons.grass,
|
|
text: Provider.of<LanguageProvider>(context).languageData[
|
|
Provider.of<LanguageProvider>(context).language]
|
|
["navBar"]["4"],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
});
|
|
}
|
|
}
|