Language Pushi Push

This Contains A lot of new Functions. None of them commented.

Selected Language will be highlighted
This commit is contained in:
Ali
2024-11-24 22:13:18 +01:00
parent a9109ebf71
commit ee079e435a
4 changed files with 216 additions and 178 deletions
-136
View File
@@ -1,136 +0,0 @@
{
"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"
}
},
"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"
}
},
"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"
}
}
}
+43 -37
View File
@@ -5,6 +5,7 @@ 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';
import 'package:mensaapp/providers/languageProvider.dart';
import 'package:mensaapp/providers/pageProvider.dart'; import 'package:mensaapp/providers/pageProvider.dart';
import 'package:mensaapp/providers/serviceProvider.dart'; import 'package:mensaapp/providers/serviceProvider.dart';
import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart'; import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart';
@@ -19,25 +20,9 @@ void main() {
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
const MyApp({super.key}); const MyApp({super.key});
Future<void> loadLanguage() async
{
try
{
String language = await rootBundle.loadString("assets/language/language.json");
Map<String, dynamic> languageData = json.decode(language);
print(languageData);
}catch(e)
{
print("Hello World");
}
}
// This widget is the root of your application. // This widget is the root of your application.
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
loadLanguage();
return MultiProvider( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider( ChangeNotifierProvider(
@@ -57,6 +42,9 @@ class MyApp extends StatelessWidget {
), ),
ChangeNotifierProvider( ChangeNotifierProvider(
create: (context) => SpezielleErnaehrungProvider(), create: (context) => SpezielleErnaehrungProvider(),
),
ChangeNotifierProvider(
create: (context) => LanguageProvider(),
) )
], ],
child: MaterialApp( child: MaterialApp(
@@ -91,15 +79,15 @@ class MyHome extends StatelessWidget {
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
), ),
title: const Text("Bewertungen löschen"), title: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["title"]),
content: const Text("Möchtest du alle Eingaben entfernen?", content: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["info"],
style: TextStyle(fontSize: 18),), style: TextStyle(fontSize: 18),),
actions: [ actions: [
ElevatedButton( ElevatedButton(
onPressed: () { onPressed: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
child: Text("Behalten"), child: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["keep"]),
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
backgroundColor: Theme.of(context).colorScheme.secondary backgroundColor: Theme.of(context).colorScheme.secondary
), ),
@@ -115,7 +103,7 @@ class MyHome extends StatelessWidget {
// Hier Aktion für Löschen ausführen // Hier Aktion für Löschen ausführen
Navigator.of(context).pop(); // Dialog schließen Navigator.of(context).pop(); // Dialog schließen
}, },
child: Text("Löschen"), child: Text(Provider.of<LanguageProvider>(context, listen: false).languageData[Provider.of<LanguageProvider>(context, listen: false).language]["floating"]["delete"]["del"]),
) )
], ],
); );
@@ -161,36 +149,54 @@ class MyHome extends StatelessWidget {
backgroundColor: Theme.of(context).colorScheme.primary, backgroundColor: Theme.of(context).colorScheme.primary,
actions: [ actions: [
IconButton( IconButton(
icon: Image.asset( icon: Opacity(
opacity: Provider.of<LanguageProvider>(context).language == "de"
? 1.0 // Voll sichtbar
: 0.4, // Halb durchsichtig
child: Image.asset(
'assets/flags/de.png', 'assets/flags/de.png',
width: 34, width: 34,
height: 24, height: 24,
fit: BoxFit.cover, fit: BoxFit.cover,
), // Erster Button rechts ),
),
onPressed: () { onPressed: () {
// Aktion für diesen Button Provider.of<LanguageProvider>(context, listen: false)
.setLanguage("de");
}, },
), ),
IconButton( IconButton(
icon: Image.asset( icon: Opacity(
'assets/flags/fr.png', opacity: Provider.of<LanguageProvider>(context).language == "en"
width: 34, ? 1.0 // Voll sichtbar
height: 24, : 0.4, // Halb durchsichtig
fit: BoxFit.cover, child: Image.asset(
), // Zweiter Button rechts
onPressed: () {
// Aktion für diesen Button
},
),
IconButton(
icon: Image.asset(
'assets/flags/en.png', 'assets/flags/en.png',
width: 34, width: 34,
height: 24, height: 24,
fit: BoxFit.cover, fit: BoxFit.cover,
), // Dritter Button rechts ),
),
onPressed: () { onPressed: () {
// Aktion für diesen Button 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");
}, },
), ),
], ],
+169
View File
@@ -0,0 +1,169 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class LanguageProvider extends ChangeNotifier {
Map<String, dynamic> 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();
}
}
-1
View File
@@ -57,7 +57,6 @@ flutter:
assets: assets:
- assets/flags/ - assets/flags/
- assets/backgrounds/ - assets/backgrounds/
- assets/language/
# The following line ensures that the Material Icons font is # The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in # included with your application, so that you can use the icons in
# the material Icons class. # the material Icons class.