diff --git a/lib/main.dart b/lib/main.dart index 2f2efd9..287a7d0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,12 +1,17 @@ +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'; +import 'package:mensaapp/providers/languageProvider.dart'; import 'package:mensaapp/providers/pageProvider.dart'; import 'package:mensaapp/providers/serviceProvider.dart'; import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart'; import 'package:provider/provider.dart'; +import 'dart:convert'; +import 'package:flutter/services.dart' show rootBundle; void main() { runApp(const MyApp()); @@ -37,6 +42,9 @@ class MyApp extends StatelessWidget { ), ChangeNotifierProvider( create: (context) => SpezielleErnaehrungProvider(), + ), + ChangeNotifierProvider( + create: (context) => LanguageProvider(), ) ], child: MaterialApp( @@ -71,15 +79,15 @@ class MyHome extends StatelessWidget { shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), - title: const Text("Bewertungen löschen"), - content: const Text("Möchtest du alle Eingaben entfernen?", + title: Text(Provider.of(context, listen: false).languageData[Provider.of(context, listen: false).language]["floating"]["delete"]["title"]), + content: Text(Provider.of(context, listen: false).languageData[Provider.of(context, listen: false).language]["floating"]["delete"]["info"], style: TextStyle(fontSize: 18),), actions: [ ElevatedButton( onPressed: () { Navigator.of(context).pop(); }, - child: Text("Behalten"), + child: Text(Provider.of(context, listen: false).languageData[Provider.of(context, listen: false).language]["floating"]["delete"]["keep"]), style: ElevatedButton.styleFrom( backgroundColor: Theme.of(context).colorScheme.secondary ), @@ -96,7 +104,7 @@ class MyHome extends StatelessWidget { // Hier Aktion für Löschen ausführen Navigator.of(context).pop(); // Dialog schließen }, - child: Text("Löschen"), + child: Text(Provider.of(context, listen: false).languageData[Provider.of(context, listen: false).language]["floating"]["delete"]["del"]), ) ], ); @@ -142,36 +150,54 @@ class MyHome extends StatelessWidget { backgroundColor: Theme.of(context).colorScheme.primary, actions: [ IconButton( - icon: Image.asset( - 'assets/flags/de.png', - width: 34, - height: 24, - fit: BoxFit.cover, - ), // Erster Button rechts + icon: Opacity( + opacity: Provider.of(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: () { - // Aktion für diesen Button + Provider.of(context, listen: false) + .setLanguage("de"); }, ), IconButton( - icon: Image.asset( - 'assets/flags/fr.png', - width: 34, - height: 24, - fit: BoxFit.cover, - ), // Zweiter Button rechts + icon: Opacity( + opacity: Provider.of(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: () { - // Aktion für diesen Button + Provider.of(context, listen: false) + .setLanguage("en"); }, ), IconButton( - icon: Image.asset( - 'assets/flags/en.png', - width: 34, - height: 24, - fit: BoxFit.cover, - ), // Dritter Button rechts + icon: Opacity( + opacity: Provider.of(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: () { - // Aktion für diesen Button + Provider.of(context, listen: false) + .setLanguage("fr"); }, ), ], diff --git a/lib/providers/languageProvider.dart b/lib/providers/languageProvider.dart new file mode 100644 index 0000000..57c778c --- /dev/null +++ b/lib/providers/languageProvider.dart @@ -0,0 +1,169 @@ +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class LanguageProvider extends ChangeNotifier { + Map languageData = { + "de": + { + "pageAmbiente": + { + "question1": "Frage1", + "question2": "Frage2", + "textfield": "Dein Feedback" + }, + "pageAnmerkungen": + { + "question1": "Frage1", + "question2": "Frage2", + "textfield": "Dein Feedback" + }, + "pageEssen": + { + "question1": "Geschmack", + "question2": "Qualität", + "textfield": "Dein Feedback" + }, + "pageHome": + { + + }, + "pageService": + { + "question1": "Frage1", + "question2": "Frage2", + "textfield": "Dein Feedback" + }, + "pageSpecial": + { + "question1": "Frage1", + "question2": "Frage2", + "textfield": "Dein Feedback" + }, + "navBar": + { + "symbol1": "Essen", + "symbol2": "Ambiente", + "symbol3": "Service", + "symbol4": "Anmerkungen", + "symbol5": "Spezielle Ernährung" + }, + "floating": + { + "info": "* Pflichtfeld", + "return": "Absenden", + "delete": + { + "title": "Bewertungen löschen", + "info": "Möchtest du alle Eingaben entfernen?", + "keep": "Behalten", + "del": "Löschen" + } + } + }, + "en": + { + "pageAmbiente": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Your Feedback" + }, + "pageAnmerkungen": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Your Feedback" + }, + "pageEssen": { + "question1": "Taste", + "question2": "Quality", + "textfield": "Your Feedback" + }, + "pageHome": { + + }, + "pageService": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Your Feedback" + }, + "pageSpecial": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Your Feedback" + }, + "navBar": { + "symbol1": "Food", + "symbol2": "Ambience", + "symbol3": "Service", + "symbol4": "Remarks", + "symbol5": "Special Diet" + }, + "floating": { + "info": "* Required field", + "return": "Submit", + "delete": + { + "title": "Delete Reviews", + "info": "Do you want to remove all entries?", + "keep": "Keep", + "del": "Delete" + } + } + }, + "fr": + { + "pageAmbiente": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Votre avis" + }, + "pageAnmerkungen": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Votre avis" + }, + "pageEssen": { + "question1": "Goût", + "question2": "Qualité", + "textfield": "Votre avis" + }, + "pageHome": { + + }, + "pageService": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Votre avis" + }, + "pageSpecial": { + "question1": "Question1", + "question2": "Question2", + "textfield": "Votre avis" + }, + "navBar": { + "symbol1": "Nourriture", + "symbol2": "Ambiance", + "symbol3": "Service", + "symbol4": "Remarques", + "symbol5": "Régime spécial" + }, + "floating": { + "info": "* Champ obligatoire", + "return": "Envoyer", + "delete": { + "title": "Supprimer les avis", + "info": "Voulez-vous supprimer toutes les entrées ?", + "keep": "Garder", + "del": "Supprimer" + } + } + } + }; + + String language = "de"; + + void setLanguage(String newLanguage) { + language = newLanguage; + notifyListeners(); + } +}