From bf5e6a8bf41c76b183696b682e86bf37eb794736 Mon Sep 17 00:00:00 2001 From: Ali Date: Mon, 25 Nov 2024 01:41:44 +0100 Subject: [PATCH] Language Change Dictionary has been modified, all texts are being translated now --- lib/main.dart | 335 +++++++++++++------------ lib/pages/pageAmbiente.dart | 188 +++++++------- lib/pages/pageAnmerkungen.dart | 194 +++++++------- lib/pages/pageEssen.dart | 231 ++++++++--------- lib/pages/pageService.dart | 193 +++++++------- lib/pages/pageSpezielleErnaehrung.dart | 205 +++++++-------- lib/providers/languageProvider.dart | 54 ++-- lib/providers/pageProvider.dart | 8 - 8 files changed, 704 insertions(+), 704 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 287a7d0..3dd8394 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -114,184 +114,187 @@ class MyHome extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - leading: IconButton( - icon: Icon( - Icons.home, - size: 36, - color: Theme.of(context).colorScheme.onPrimary, + return Consumer(builder: (context, languageProvider, child) { + return Scaffold( + appBar: AppBar( + leading: IconButton( + icon: Icon( + Icons.home, + size: 36, + color: Theme.of(context).colorScheme.onPrimary, + ), + onPressed: () { + // Aktion für diesen Button + }, ), - onPressed: () { - // Aktion für diesen Button - }, - ), - title: Consumer( - // 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( - pageProvider.titleString[pageProvider.selectedPage], - // Hier wird der dynamische Titel angezeigt - style: TextStyle( - color: Theme.of(context).colorScheme.onPrimary, - fontWeight: FontWeight.bold, + title: Consumer( + // 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(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(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(context, listen: false) + .setLanguage("de"); + }, + ), + IconButton( + 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: () { + Provider.of(context, listen: false) + .setLanguage("en"); + }, + ), + IconButton( + 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: () { + Provider.of(context, listen: false) + .setLanguage("fr"); + }, + ), + ], + ), + body: Consumer( + 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, + ), + ), + ), + ) + ], ); }, ), - backgroundColor: Theme.of(context).colorScheme.primary, - actions: [ - IconButton( - 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, - ), + floatingActionButton: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["floating"]["info"], + style: TextStyle(fontSize: 15), ), - onPressed: () { - Provider.of(context, listen: false) - .setLanguage("de"); - }, - ), - IconButton( - 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, - ), + const SizedBox( + height: 10, ), - onPressed: () { - Provider.of(context, listen: false) - .setLanguage("en"); - }, - ), - IconButton( - 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, + FloatingActionButton.extended( + onPressed: () {}, + label: Text( + Provider.of(context).languageData[Provider.of(context).language]["floating"]["return"], + style: TextStyle(fontSize: 20), ), - ), - onPressed: () { - Provider.of(context, listen: false) - .setLanguage("fr"); - }, - ), - ], - ), - body: Consumer( - 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, - ), - ), + 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(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(context).languageData[Provider.of(context).language]["navBar"]["0"], ), - ) - ], - ); - }, - ), - floatingActionButton: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const Text( - "* Pflichtfeld", - style: TextStyle(fontSize: 15), - ), - const SizedBox( - height: 10, - ), - FloatingActionButton.extended( - onPressed: () {}, - label: const Text( - "Absenden", - style: TextStyle(fontSize: 20), + GButton( + icon: Icons.chair, /* prev: landscape*/ + text: Provider.of(context).languageData[Provider.of(context).language]["navBar"]["1"], + ), + GButton( + icon: Icons.mood, + text: Provider.of(context).languageData[Provider.of(context).language]["navBar"]["2"], + ), + GButton( + icon: Icons.feedback, + text: Provider.of(context).languageData[Provider.of(context).language]["navBar"]["3"], + ), + GButton( + icon: Icons.grass, + text: Provider.of(context).languageData[Provider.of(context).language]["navBar"]["4"], + ), + ], ), - 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(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: const [ - GButton( - icon: Icons.fastfood_outlined, - text: "Essen", - ), - GButton( - icon: Icons.chair, /* prev: landscape*/ - text: "Ambiente", - ), - GButton( - icon: Icons.mood, - text: "Service", - ), - GButton( - icon: Icons.feedback, - text: "Anmerkungen", - ), - GButton( - icon: Icons.grass, - text: "Spezielle Ernährung", - ), - ], ), ), - ), - ); + ); + }); + } } diff --git a/lib/pages/pageAmbiente.dart b/lib/pages/pageAmbiente.dart index 85039f8..b9e3c12 100644 --- a/lib/pages/pageAmbiente.dart +++ b/lib/pages/pageAmbiente.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:mensaapp/providers/languageProvider.dart'; import 'package:provider/provider.dart'; import '../modules/ratingStars.dart'; @@ -9,101 +10,104 @@ class PageAmbiente extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( - body: Stack( - children: [ - Container( - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/backgrounds/Ambiente.jpg"), - fit: BoxFit.cover, - colorFilter: ColorFilter.mode( - Colors.white.withOpacity(0.2), - BlendMode.dstATop - ), - ) - ), - ), - Center( - child: SingleChildScrollView( - child: Container( - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.8), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(80), - bottomRight: Radius.circular(80) - ) - ), - width: 600, - height: 400, - padding: EdgeInsets.symmetric(horizontal: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Frage1*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars(onRate: (value) { - essenProvider.setRatingFrage1(value); - }, initRating: essenProvider.ratingFrage1,); - }, - ) - ], + return Consumer(builder: (context, languageProvider, child){ + return Scaffold( + body: Stack( + children: [ + Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/backgrounds/Ambiente.jpg"), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + Colors.white.withOpacity(0.2), + BlendMode.dstATop ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Frage2*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars(onRate: (value) { - essenProvider.setRatingFrage2(value); - }, initRating: essenProvider.ratingFrage2,); - }, - ) - ], - ), - const SizedBox( - height: 50, - ), - Consumer( - builder: (context, essenProvider, child) { - return TextFormField( - initialValue: essenProvider.freiText, - onChanged: (value) { - essenProvider.setFreiText(value); - }, - autofocus: false, - maxLength: 500, - maxLines: 4, - decoration: InputDecoration( - labelText: "Dein Feedback (optional)", - labelStyle: const TextStyle(fontSize: 20), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(15) - ), - ), - style: TextStyle(fontSize: 20), - ); - }, - ) - ], - ), + ) ), ), - ) - ], - ), + Center( + child: SingleChildScrollView( + child: Container( + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.8), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(80), + bottomRight: Radius.circular(80) + ) + ), + width: 600, + height: 400, + padding: EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageAmbiente"]["question1"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: (context, essenProvider, child) { + return RatingStars(onRate: (value) { + essenProvider.setRatingFrage1(value); + }, initRating: essenProvider.ratingFrage1,); + }, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageAmbiente"]["question2"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: (context, essenProvider, child) { + return RatingStars(onRate: (value) { + essenProvider.setRatingFrage2(value); + }, initRating: essenProvider.ratingFrage2,); + }, + ) + ], + ), + const SizedBox( + height: 50, + ), + Consumer( + builder: (context, essenProvider, child) { + return TextFormField( + initialValue: essenProvider.freiText, + onChanged: (value) { + essenProvider.setFreiText(value); + }, + autofocus: false, + maxLength: 500, + maxLines: 4, + decoration: InputDecoration( + labelText: Provider.of(context).languageData[Provider.of(context).language]["textfield"], + labelStyle: const TextStyle(fontSize: 20), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(15) + ), + ), + style: TextStyle(fontSize: 20), + ); + }, + ) + ], + ), + ), + ), + ) + ], + ), + ); + } ); } } diff --git a/lib/pages/pageAnmerkungen.dart b/lib/pages/pageAnmerkungen.dart index 6b65a13..6f2f571 100644 --- a/lib/pages/pageAnmerkungen.dart +++ b/lib/pages/pageAnmerkungen.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:mensaapp/providers/anmerkungProvider.dart'; +import 'package:mensaapp/providers/languageProvider.dart'; import 'package:provider/provider.dart'; import '../modules/ratingStars.dart'; @@ -9,103 +10,106 @@ class PageAnmerkungen extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( - body: Stack( - children: [ - Container( - width: 1600, - height: 800, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/backgrounds/Anmerkungen.jpg"), - fit: BoxFit.cover, - colorFilter: ColorFilter.mode( - Colors.white.withOpacity(0.2), BlendMode.dstATop), - )), - ), - Center( - child: SingleChildScrollView( - child: Container( - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.8), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(80), - bottomRight: Radius.circular(80))), - padding: EdgeInsets.symmetric(horizontal: 20), - height: 400, - width: 600, - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Frage1*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars( - onRate: (value) { - essenProvider.setRatingFrage1(value); - }, - initRating: essenProvider.ratingFrage1, - ); - }, - ) - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Frage2*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars( - onRate: (value) { - essenProvider.setRatingFrage2(value); - }, - initRating: essenProvider.ratingFrage2, - ); - }, - ) - ], - ), - const SizedBox( - height: 50, - ), - Consumer( - builder: (context, essenProvider, child) { - return TextFormField( - initialValue: essenProvider.freiText, - onChanged: (value) { - essenProvider.setFreiText(value); - }, - autofocus: false, - maxLength: 500, - maxLines: 4, - decoration: InputDecoration( - labelText: "Dein Feedback (optional)", - labelStyle: const TextStyle(fontSize: 20), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(15)), + return Consumer(builder: (context, languageProvider, child) + { + return Scaffold( + body: Stack( + children: [ + Container( + width: 1600, + height: 800, + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/backgrounds/Anmerkungen.jpg"), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + Colors.white.withOpacity(0.2), BlendMode.dstATop), + )), + ), + Center( + child: SingleChildScrollView( + child: Container( + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.8), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(80), + bottomRight: Radius.circular(80))), + padding: EdgeInsets.symmetric(horizontal: 20), + height: 400, + width: 600, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageAnmerkungen"]["question1"], + style: TextStyle(fontSize: 35), ), - style: TextStyle(fontSize: 20), - ); - }, - ) - ], + Consumer( + builder: (context, essenProvider, child) { + return RatingStars( + onRate: (value) { + essenProvider.setRatingFrage1(value); + }, + initRating: essenProvider.ratingFrage1, + ); + }, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageAnmerkungen"]["question2"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: (context, essenProvider, child) { + return RatingStars( + onRate: (value) { + essenProvider.setRatingFrage2(value); + }, + initRating: essenProvider.ratingFrage2, + ); + }, + ) + ], + ), + const SizedBox( + height: 50, + ), + Consumer( + builder: (context, essenProvider, child) { + return TextFormField( + initialValue: essenProvider.freiText, + onChanged: (value) { + essenProvider.setFreiText(value); + }, + autofocus: false, + maxLength: 500, + maxLines: 4, + decoration: InputDecoration( + labelText: Provider.of(context).languageData[Provider.of(context).language]["textfield"], + labelStyle: const TextStyle(fontSize: 20), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(15)), + ), + style: TextStyle(fontSize: 20), + ); + }, + ) + ], + ), ), ), - ), - ) - ], - ), - ); + ) + ], + ), + ); + }); } } diff --git a/lib/pages/pageEssen.dart b/lib/pages/pageEssen.dart index 9d4720a..01eee91 100644 --- a/lib/pages/pageEssen.dart +++ b/lib/pages/pageEssen.dart @@ -4,6 +4,7 @@ import 'package:mensaapp/modules/fetchMenu.dart'; import 'package:mensaapp/modules/ratingEmote.dart'; import 'package:mensaapp/modules/ratingStars.dart'; import 'package:mensaapp/providers/essenProvider.dart'; +import 'package:mensaapp/providers/languageProvider.dart'; import 'package:mensaapp/providers/pageProvider.dart'; import 'package:provider/provider.dart'; @@ -12,126 +13,128 @@ class PageEssen extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( - body: Stack( - children: [ - // Hintergrundbild - 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, + return Consumer(builder: (context, languageProvider, child){ + return Scaffold( + body: Stack( + children: [ + // Hintergrundbild + 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, + ), ), ), ), - ), - // Vordergrundinhalte + // Vordergrundinhalte - Center( - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Consumer( - builder: (context, pageProvider, child) { - return Text( - pageProvider.selectedEssenName, - style: const TextStyle(fontSize: 40), - ); - }, - ), - const SizedBox( - height: 30, - ), - Container( - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.8), - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(80), - bottomRight: Radius.circular(80))), - height: 400, - width: 600, - padding: EdgeInsets.symmetric(horizontal: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Geschmack*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars( - onRate: (value) { - essenProvider.setRatingGeschmack(value); - }, - initRating: essenProvider.ratingGeschmack, - ); - }, - ) - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Qualität*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars( - onRate: (value) { - essenProvider.setRatingQuali(value); - }, - initRating: essenProvider.ratingQuali, - ); - }, - ) - ], - ), - const SizedBox( - height: 50, - ), - Consumer( - builder: (context, essenProvider, child) { - return TextFormField( - initialValue: essenProvider.freiText, - onChanged: (value) { - essenProvider.setFreiText(value); - }, - autofocus: false, - maxLength: 500, - maxLines: 4, - decoration: InputDecoration( - labelText: "Dein Feedback (optional)", - labelStyle: const TextStyle(fontSize: 20), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(15), - ), - ), - style: TextStyle(fontSize: 20), - ); - }, - ), - ], + Center( + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Consumer( + builder: (context, pageProvider, child) { + return Text( + pageProvider.selectedEssenName, + style: const TextStyle(fontSize: 40), + ); + }, ), - ), - ], + const SizedBox( + height: 30, + ), + Container( + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.8), + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(80), + bottomRight: Radius.circular(80))), + height: 400, + width: 600, + padding: EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageEssen"]["question1"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: (context, essenProvider, child) { + return RatingStars( + onRate: (value) { + essenProvider.setRatingGeschmack(value); + }, + initRating: essenProvider.ratingGeschmack, + ); + }, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageEssen"]["question2"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: (context, essenProvider, child) { + return RatingStars( + onRate: (value) { + essenProvider.setRatingQuali(value); + }, + initRating: essenProvider.ratingQuali, + ); + }, + ) + ], + ), + const SizedBox( + height: 50, + ), + Consumer( + builder: (context, essenProvider, child) { + return TextFormField( + initialValue: essenProvider.freiText, + onChanged: (value) { + essenProvider.setFreiText(value); + }, + autofocus: false, + maxLength: 500, + maxLines: 4, + decoration: InputDecoration( + labelText: Provider.of(context).languageData[Provider.of(context).language]["textfield"], + labelStyle: const TextStyle(fontSize: 20), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(15), + ), + ), + style: TextStyle(fontSize: 20), + ); + }, + ), + ], + ), + ), + ], + ), ), ), - ), - ], - ), - ); + ], + ), + ); + }); } } diff --git a/lib/pages/pageService.dart b/lib/pages/pageService.dart index bcf89da..bf99699 100644 --- a/lib/pages/pageService.dart +++ b/lib/pages/pageService.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:mensaapp/providers/languageProvider.dart'; import 'package:mensaapp/providers/serviceProvider.dart'; import 'package:provider/provider.dart'; @@ -9,103 +10,105 @@ class PageService extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( - body: Stack( - children: [ - Container( - width: 1600, - height: 750, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/backgrounds/Service.jpg"), - fit: BoxFit.cover, - colorFilter: ColorFilter.mode( - Colors.white.withOpacity(0.2), - BlendMode.dstATop - ), - ) - ), - ), - Center( - child: SingleChildScrollView( - child: Container( - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.8), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(80), - bottomRight: Radius.circular(80) - ) - ), - width: 600, - height: 400, - padding: EdgeInsets.symmetric(horizontal: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Frage1*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars(onRate: (value) { - essenProvider.setRatingFrage1(value); - }, initRating: essenProvider.ratingFrage1,); - }, - ) - ], + return Consumer(builder: (context, languageProvider, child){ + return Scaffold( + body: Stack( + children: [ + Container( + width: 1600, + height: 750, + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/backgrounds/Service.jpg"), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + Colors.white.withOpacity(0.2), + BlendMode.dstATop ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Frage2*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: (context, essenProvider, child) { - return RatingStars(onRate: (value) { - essenProvider.setRatingFrage2(value); - }, initRating: essenProvider.ratingFrage2,); - }, - ) - ], - ), - const SizedBox( - height: 50, - ), - Consumer( - builder: (context, essenProvider, child) { - return TextFormField( - initialValue: essenProvider.freiText, - onChanged: (value) { - essenProvider.setFreiText(value); - }, - autofocus: false, - maxLength: 500, - maxLines: 4, - decoration: InputDecoration( - labelText: "Dein Feedback (optional)", - labelStyle: const TextStyle(fontSize: 20), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(15) - ), - ), - style: TextStyle(fontSize: 20), - ); - }, - ) - ], - ), + ) ), ), - ) - ], - ), - ); + Center( + child: SingleChildScrollView( + child: Container( + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.8), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(80), + bottomRight: Radius.circular(80) + ) + ), + width: 600, + height: 400, + padding: EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageService"]["question1"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: (context, essenProvider, child) { + return RatingStars(onRate: (value) { + essenProvider.setRatingFrage1(value); + }, initRating: essenProvider.ratingFrage1,); + }, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageService"]["question2"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: (context, essenProvider, child) { + return RatingStars(onRate: (value) { + essenProvider.setRatingFrage2(value); + }, initRating: essenProvider.ratingFrage2,); + }, + ) + ], + ), + const SizedBox( + height: 50, + ), + Consumer( + builder: (context, essenProvider, child) { + return TextFormField( + initialValue: essenProvider.freiText, + onChanged: (value) { + essenProvider.setFreiText(value); + }, + autofocus: false, + maxLength: 500, + maxLines: 4, + decoration: InputDecoration( + labelText: Provider.of(context).languageData[Provider.of(context).language]["textfield"], + labelStyle: const TextStyle(fontSize: 20), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(15) + ), + ), + style: TextStyle(fontSize: 20), + ); + }, + ) + ], + ), + ), + ), + ) + ], + ), + ); + }); } } diff --git a/lib/pages/pageSpezielleErnaehrung.dart b/lib/pages/pageSpezielleErnaehrung.dart index 816c94a..d129bd8 100644 --- a/lib/pages/pageSpezielleErnaehrung.dart +++ b/lib/pages/pageSpezielleErnaehrung.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:mensaapp/modules/ratingEmote.dart'; import 'package:mensaapp/modules/ratingStars.dart'; +import 'package:mensaapp/providers/languageProvider.dart'; import 'package:mensaapp/providers/spezielleErnaehrungProvider.dart'; import 'package:provider/provider.dart'; @@ -11,109 +12,111 @@ class PageSpezielleErnaehrung extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( - body: Stack( - children: [ - Container( - width: 1600, - height: 750, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/backgrounds/Speziell.jpg"), - fit: BoxFit.cover, - colorFilter: ColorFilter.mode( - Colors.white.withOpacity(0.2), BlendMode.dstATop), - )), - ), - Center( - child: SingleChildScrollView( - child: Container( - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.8), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(80), - bottomRight: Radius.circular(80))), - width: 650, - height: 450, - padding: EdgeInsets.symmetric(horizontal: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Vegan?*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: - (context, spezielleErnaehrungProvider, child) { - return RatingStars( - onRate: (value) { - spezielleErnaehrungProvider - .setRatingSitzmoeglichkeit(value); - }, - initRating: spezielleErnaehrungProvider - .ratingSitzmoeglichkeit, - ); - }, - ) - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - "Keine Ahnung*", - style: TextStyle(fontSize: 35), - ), - Consumer( - builder: - (context, spezielleErnaehrungProvider, child) { - return RatingStars( - onRate: (value) { - spezielleErnaehrungProvider - .setRatingKeineAhnung(value); - }, - initRating: - spezielleErnaehrungProvider.ratingKeineAhnung, - ); - }, - ), - ], - ), - const SizedBox( - height: 50, - ), - Consumer( - builder: (context, spezielleErnaehrungProvider, child) { - return TextFormField( - initialValue: spezielleErnaehrungProvider.freiText, - onChanged: (value) { - spezielleErnaehrungProvider.setFreiText(value); - }, - autofocus: false, - maxLength: 500, - maxLines: 5, - decoration: InputDecoration( - labelText: "Dein Feedback (optional)", - labelStyle: const TextStyle(fontSize: 20), - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(15)), + return Consumer(builder: (context, languageProvider, child) { + return Scaffold( + body: Stack( + children: [ + Container( + width: 1600, + height: 750, + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/backgrounds/Speziell.jpg"), + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + Colors.white.withOpacity(0.2), BlendMode.dstATop), + )), + ), + Center( + child: SingleChildScrollView( + child: Container( + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.8), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(80), + bottomRight: Radius.circular(80))), + width: 650, + height: 450, + padding: EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageSpecial"]["question1"], + style: TextStyle(fontSize: 35), ), - style: TextStyle(fontSize: 20), - ); - }, - ) - ], + Consumer( + builder: + (context, spezielleErnaehrungProvider, child) { + return RatingStars( + onRate: (value) { + spezielleErnaehrungProvider + .setRatingSitzmoeglichkeit(value); + }, + initRating: spezielleErnaehrungProvider + .ratingSitzmoeglichkeit, + ); + }, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + Provider.of(context).languageData[Provider.of(context).language]["pageSpecial"]["question2"], + style: TextStyle(fontSize: 35), + ), + Consumer( + builder: + (context, spezielleErnaehrungProvider, child) { + return RatingStars( + onRate: (value) { + spezielleErnaehrungProvider + .setRatingKeineAhnung(value); + }, + initRating: + spezielleErnaehrungProvider.ratingKeineAhnung, + ); + }, + ), + ], + ), + const SizedBox( + height: 50, + ), + Consumer( + builder: (context, spezielleErnaehrungProvider, child) { + return TextFormField( + initialValue: spezielleErnaehrungProvider.freiText, + onChanged: (value) { + spezielleErnaehrungProvider.setFreiText(value); + }, + autofocus: false, + maxLength: 500, + maxLines: 5, + decoration: InputDecoration( + labelText: Provider.of(context).languageData[Provider.of(context).language]["textfield"], + labelStyle: const TextStyle(fontSize: 20), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(15)), + ), + style: TextStyle(fontSize: 20), + ); + }, + ) + ], + ), ), ), - ), - ) - ], - ), - ); + ) + ], + ), + ); + }); } } diff --git a/lib/providers/languageProvider.dart b/lib/providers/languageProvider.dart index 57c778c..2b81e43 100644 --- a/lib/providers/languageProvider.dart +++ b/lib/providers/languageProvider.dart @@ -6,23 +6,21 @@ class LanguageProvider extends ChangeNotifier { Map languageData = { "de": { - "pageAmbiente": + "textfield": "Dein Feedback", + "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": { @@ -32,21 +30,19 @@ class LanguageProvider extends ChangeNotifier { { "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" + "0": "Essen", + "1": "Ambiente", + "2": "Service", + "3": "Anmerkungen", + "4": "Spezielle Ernährung" }, "floating": { @@ -63,20 +59,18 @@ class LanguageProvider extends ChangeNotifier { }, "en": { - "pageAmbiente": { + "textfield": "Your Feedback", + "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": { @@ -84,19 +78,17 @@ class LanguageProvider extends ChangeNotifier { "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" + "0": "Food", + "1": "Ambience", + "2": "Service", + "3": "Remarks", + "4": "Special Diet" }, "floating": { "info": "* Required field", @@ -112,20 +104,18 @@ class LanguageProvider extends ChangeNotifier { }, "fr": { - "pageAmbiente": { + "textfield": "Votre avis", + "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": { @@ -133,19 +123,17 @@ class LanguageProvider extends ChangeNotifier { "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" + "0": "Nourriture", + "1": "Ambiance", + "2": "Service", + "3": "Remarques", + "4": "Régime spécial" }, "floating": { "info": "* Champ obligatoire", diff --git a/lib/providers/pageProvider.dart b/lib/providers/pageProvider.dart index 17bb2a5..8713d75 100644 --- a/lib/providers/pageProvider.dart +++ b/lib/providers/pageProvider.dart @@ -18,14 +18,6 @@ class PageProvider extends ChangeNotifier { const PageSpezielleErnaehrung() ]; - List titleString = [ - "Essen", - "Ambiente", - "Service", - "Anmerkungen", - "Spezielle Ernährung" - ]; - void changePage(int index) { selectedPage = index; notifyListeners();