From 142aadb407cfb909bd8d8a1fc98eb3bcf8c2403e Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Mon, 4 Mar 2024 01:06:57 +0100 Subject: [PATCH 01/10] feat/ localization_dropdown --- .../widgets/common/app_drawer/app_drawer.dart | 27 +++++++++++++++++++ .../common/app_drawer/app_drawer_model.dart | 13 ++++++++- pubspec.lock | 26 +++++++++--------- 3 files changed, 52 insertions(+), 14 deletions(-) diff --git a/lib/ui/widgets/common/app_drawer/app_drawer.dart b/lib/ui/widgets/common/app_drawer/app_drawer.dart index d8b3c20..525796b 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer.dart @@ -9,6 +9,10 @@ import 'app_drawer_model.dart'; import 'dart:io'; import 'package:flutter/cupertino.dart'; +enum Languages { english, french } + +//Languages selectedLanguage = Languages.english; + class AppDrawer extends StackedView { const AppDrawer({super.key}); @@ -99,6 +103,29 @@ class AppDrawer extends StackedView { ), SizedBox(height: 10.h), Divider(thickness: 15.w, color: context.palette?.gray1), + ListTile( + leading: Icon(Icons.translate), + title: DropdownButton( + padding: EdgeInsets.all(20), + isExpanded: true, + borderRadius: BorderRadius.all(Radius.circular(10)), + value: viewModel.selectedLanguages, + items: Languages.values + .map( + (language) => DropdownMenuItem( + value: language, + child: Text(language.name.toUpperCase()), + ), + ) + .toList(), + onChanged: (value) { + if (value == null) return; + + viewModel.toggleLanguage = value; + }, + ), + ), + Divider(thickness: 15.w, color: context.palette?.gray1), Spacer(), Divider( thickness: 10.w, diff --git a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart index 4e4f933..4710b75 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart @@ -2,6 +2,7 @@ import 'package:receipe_app/app/app.router.dart'; import 'package:receipe_app/data_model/user.dart'; import 'package:receipe_app/services/secure_storage_service.dart'; import 'package:receipe_app/services/user_service.dart'; +import 'package:receipe_app/ui/widgets/common/app_drawer/app_drawer.dart'; import 'package:stacked/stacked.dart'; import 'package:receipe_app/app/app.locator.dart'; import 'package:receipe_app/app/app.logger.dart'; @@ -13,9 +14,19 @@ class AppDrawerModel extends ReactiveViewModel { final _userService = locator(); final _secureStorageService = locator(); + final _logger = getLogger('App_Drawer'); + User? get user => _userService.user; - final _logger = getLogger('App_Drawer'); + Languages _selectedLanguage = Languages.english; + + Languages get selectedLanguages => _selectedLanguage; + + //setter to toggle and refresh Language dropdown + set toggleLanguage(Languages value) { + _selectedLanguage = value; + rebuildUi(); + } void navigateToHome() { _logger.i("go back"); diff --git a/pubspec.lock b/pubspec.lock index 0992e05..e986efb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -173,10 +173,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" convert: dependency: transitive description: @@ -513,10 +513,10 @@ packages: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" mime: dependency: transitive description: @@ -830,10 +830,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stacked: dependency: "direct main" description: @@ -870,10 +870,10 @@ packages: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -910,10 +910,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" timing: dependency: transitive description: @@ -990,10 +990,10 @@ packages: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "0.3.0" web_socket_channel: dependency: transitive description: @@ -1035,5 +1035,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0 <4.0.0" + dart: ">=3.2.0-194.0.dev <4.0.0" flutter: ">=3.13.0" From cce59608637e9449e4ab7367946253144c37cbb1 Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Mon, 4 Mar 2024 19:05:25 +0100 Subject: [PATCH 02/10] feat/fr_intl_localization --- ios/Runner/Info.plist | 5 + lib/enums/languages.dart | 1 + lib/generated/intl/messages_all.dart | 4 + lib/generated/intl/messages_fr.dart | 110 ++++++++++++++++++ lib/generated/l10n.dart | 1 + lib/l10n/intl_fr.arb | 58 +++++++++ lib/main.dart | 2 + .../widgets/common/app_drawer/app_drawer.dart | 11 +- .../common/app_drawer/app_drawer_model.dart | 6 +- 9 files changed, 189 insertions(+), 9 deletions(-) create mode 100644 lib/enums/languages.dart create mode 100644 lib/generated/intl/messages_fr.dart create mode 100644 lib/l10n/intl_fr.arb diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 9a3bec3..20f5333 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -6,6 +6,11 @@ $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName Receipe App + CFBundleLocalizations + + en + fr + CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/lib/enums/languages.dart b/lib/enums/languages.dart new file mode 100644 index 0000000..d04cfd1 --- /dev/null +++ b/lib/enums/languages.dart @@ -0,0 +1 @@ +enum Languages { english, french } diff --git a/lib/generated/intl/messages_all.dart b/lib/generated/intl/messages_all.dart index 203415c..f9e94e5 100644 --- a/lib/generated/intl/messages_all.dart +++ b/lib/generated/intl/messages_all.dart @@ -17,16 +17,20 @@ import 'package:intl/message_lookup_by_library.dart'; import 'package:intl/src/intl_helpers.dart'; import 'messages_en.dart' as messages_en; +import 'messages_fr.dart' as messages_fr; typedef Future LibraryLoader(); Map _deferredLibraries = { 'en': () => new SynchronousFuture(null), + 'fr': () => new SynchronousFuture(null), }; MessageLookupByLibrary? _findExact(String localeName) { switch (localeName) { case 'en': return messages_en.messages; + case 'fr': + return messages_fr.messages; default: return null; } diff --git a/lib/generated/intl/messages_fr.dart b/lib/generated/intl/messages_fr.dart new file mode 100644 index 0000000..b889d4c --- /dev/null +++ b/lib/generated/intl/messages_fr.dart @@ -0,0 +1,110 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a fr locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'fr'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "already_have_an_account": + MessageLookupByLibrary.simpleMessage("Vous avez déjà un compte?"), + "are_you_sure": MessageLookupByLibrary.simpleMessage( + "Êtes-vous sûr de vouloir supprimer ce plat ?"), + "cancel": MessageLookupByLibrary.simpleMessage("Annuler"), + "click_done": MessageLookupByLibrary.simpleMessage( + "Cliquez sur \"Terminé\" après votre saisie."), + "connection_error": MessageLookupByLibrary.simpleMessage( + "Il semble que nous ayons un problème de connexion au serveur. Veuillez réessayer lorsque vous avez un réseau plus fort"), + "connection_timeout": MessageLookupByLibrary.simpleMessage( + "Pas de connexion Internet. Il semble que la connexion a expiré"), + "create_a_dish": MessageLookupByLibrary.simpleMessage("Créer un plat"), + "create_a_dish_intro": MessageLookupByLibrary.simpleMessage( + "Salut 😚, il est temps de créer ce plat spécial que vous avez toujours désiré. \nVeuillez remplir les détails ci-dessous"), + "create_dish": MessageLookupByLibrary.simpleMessage("Créer un plat"), + "dark_mode": MessageLookupByLibrary.simpleMessage("MODE SOMBRE"), + "date_created": + MessageLookupByLibrary.simpleMessage("Date de création : "), + "delete_dish": + MessageLookupByLibrary.simpleMessage("Supprimer le plat"), + "dont_have_an_account": + MessageLookupByLibrary.simpleMessage("Vous n\'avez pas de compte?"), + "drawer_home": MessageLookupByLibrary.simpleMessage("ACCUEIL"), + "edit_dish": MessageLookupByLibrary.simpleMessage("Modifier le plat"), + "email_address": MessageLookupByLibrary.simpleMessage("Adresse e-mail"), + "email_cannot_be_empty": MessageLookupByLibrary.simpleMessage( + "L\'e-mail ne peut pas être vide"), + "email_must_be_a_valid_email": MessageLookupByLibrary.simpleMessage( + "L\'e-mail doit être une adresse e-mail valide"), + "enter_your_email": + MessageLookupByLibrary.simpleMessage("Entrez votre adresse e-mail"), + "enter_your_first_name": + MessageLookupByLibrary.simpleMessage("Entrez votre prénom"), + "enter_your_last_name": + MessageLookupByLibrary.simpleMessage("Entrez votre nom de famille"), + "enter_your_password": + MessageLookupByLibrary.simpleMessage("Entrez votre mot de passe"), + "first_name": MessageLookupByLibrary.simpleMessage("Prénom"), + "generate_recipe_contents": MessageLookupByLibrary.simpleMessage( + "Génération du contenu de la recette"), + "get_started": MessageLookupByLibrary.simpleMessage("Commencer"), + "hello_word": MessageLookupByLibrary.simpleMessage("Bonjour le monde"), + "hi": MessageLookupByLibrary.simpleMessage("Salut"), + "home": MessageLookupByLibrary.simpleMessage("Accueil"), + "ingredient_of_dish": + MessageLookupByLibrary.simpleMessage("Ingrédients du plat"), + "ingredients": MessageLookupByLibrary.simpleMessage("Ingrédients"), + "instructions": MessageLookupByLibrary.simpleMessage("Instructions"), + "kindly_edit": MessageLookupByLibrary.simpleMessage( + "Veuillez modifier les détails ci-dessous pour refléter les bonnes informations sur le plat standard"), + "last_name": MessageLookupByLibrary.simpleMessage("Nom de famille"), + "login": MessageLookupByLibrary.simpleMessage("S\'identifier"), + "logout": MessageLookupByLibrary.simpleMessage("SE DÉCONNECTER "), + "my_dish": MessageLookupByLibrary.simpleMessage("MON PLAT"), + "mydish": MessageLookupByLibrary.simpleMessage("Mon plat"), + "name": MessageLookupByLibrary.simpleMessage("Nom : "), + "name_of_dish": MessageLookupByLibrary.simpleMessage("Nom du plat"), + "no_dish_available": MessageLookupByLibrary.simpleMessage( + "Il n\'y a actuellement aucun plat disponible à afficher"), + "no_internet": MessageLookupByLibrary.simpleMessage( + "Pas de connexion Internet. Veuillez réessayer plus tard"), + "onboarding_subtitle_one": MessageLookupByLibrary.simpleMessage( + "Kally Dish propose des denrées non périssables au prix de gros le plus bas, livrées gratuitement à votre porte"), + "onboarding_subtitle_three": MessageLookupByLibrary.simpleMessage( + "Kally Dish offre un accès exclusif à des avantages de réduction des coûts, d\'économie de temps et de réduction du stress grâce à son plan d\'adhésion"), + "onboarding_subtitle_two": MessageLookupByLibrary.simpleMessage( + "Avec Kally Dish, vous pouvez passer votre commande depuis le confort de votre domicile en appelant l\'un de nos numéros"), + "onboarding_title_one": MessageLookupByLibrary.simpleMessage( + "Livraison gratuite de qualité"), + "onboarding_title_three": MessageLookupByLibrary.simpleMessage( + "Abonnez-vous à notre magasin"), + "onboarding_title_two": + MessageLookupByLibrary.simpleMessage("Commande sans couture"), + "password": MessageLookupByLibrary.simpleMessage("Mot de passe"), + "please_sign_in_to_continue": MessageLookupByLibrary.simpleMessage( + "Veuillez vous connecter pour continuer"), + "required": MessageLookupByLibrary.simpleMessage("Obligatoire"), + "service_unavailable": + MessageLookupByLibrary.simpleMessage("Service non disponible"), + "sign_up": MessageLookupByLibrary.simpleMessage("S\'inscrire"), + "unknown_error": + MessageLookupByLibrary.simpleMessage("Erreur inconnue"), + "welcome": MessageLookupByLibrary.simpleMessage("Bienvenue"), + "yes": MessageLookupByLibrary.simpleMessage("Oui") + }; +} diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 51e1e3a..9c658f4 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -607,6 +607,7 @@ class AppLocalizationDelegate extends LocalizationsDelegate { List get supportedLocales { return const [ Locale.fromSubtags(languageCode: 'en'), + Locale.fromSubtags(languageCode: 'fr'), ]; } diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb new file mode 100644 index 0000000..fe290d9 --- /dev/null +++ b/lib/l10n/intl_fr.arb @@ -0,0 +1,58 @@ +{ + "@@locale": "fr", + "hello_word": "Bonjour le monde", + "get_started": "Commencer", + "onboarding_title_one": "Livraison gratuite de qualité", + "onboarding_subtitle_one": "Kally Dish propose des denrées non périssables au prix de gros le plus bas, livrées gratuitement à votre porte", + "onboarding_title_two": "Commande sans couture", + "onboarding_subtitle_two": "Avec Kally Dish, vous pouvez passer votre commande depuis le confort de votre domicile en appelant l'un de nos numéros", + "onboarding_title_three": "Abonnez-vous à notre magasin", + "onboarding_subtitle_three": "Kally Dish offre un accès exclusif à des avantages de réduction des coûts, d'économie de temps et de réduction du stress grâce à son plan d'adhésion", + "welcome": "Bienvenue", + "mydish": "Mon plat", + "please_sign_in_to_continue": "Veuillez vous connecter pour continuer", + "email_address": "Adresse e-mail", + "enter_your_email": "Entrez votre adresse e-mail", + "password": "Mot de passe", + "enter_your_password": "Entrez votre mot de passe", + "first_name": "Prénom", + "enter_your_first_name": "Entrez votre prénom", + "last_name": "Nom de famille", + "enter_your_last_name": "Entrez votre nom de famille", + "login": "S'identifier", + "dont_have_an_account": "Vous n'avez pas de compte?", + "already_have_an_account": "Vous avez déjà un compte?", + "sign_up": "S'inscrire", + "email_cannot_be_empty": "L'e-mail ne peut pas être vide", + "email_must_be_a_valid_email": "L'e-mail doit être une adresse e-mail valide", + "required": "Obligatoire", + "kindly_edit": "Veuillez modifier les détails ci-dessous pour refléter les bonnes informations sur le plat standard", + "edit_dish": "Modifier le plat", + "name_of_dish": "Nom du plat", + "instructions": "Instructions", + "ingredients": "Ingrédients", + "click_done": "Cliquez sur \"Terminé\" après votre saisie.", + "name": "Nom : ", + "date_created": "Date de création : ", + "cancel": "Annuler", + "yes": "Oui", + "are_you_sure": "Êtes-vous sûr de vouloir supprimer ce plat ?", + "delete_dish": "Supprimer le plat", + "create_a_dish": "Créer un plat", + "create_a_dish_intro": "Salut 😚, il est temps de créer ce plat spécial que vous avez toujours désiré. \nVeuillez remplir les détails ci-dessous", + "ingredient_of_dish": "Ingrédients du plat", + "create_dish": "Créer un plat", + "no_internet": "Pas de connexion Internet. Veuillez réessayer plus tard", + "connection_timeout": "Pas de connexion Internet. Il semble que la connexion a expiré", + "service_unavailable": "Service non disponible", + "unknown_error": "Erreur inconnue", + "home": "Accueil", + "drawer_home": "ACCUEIL", + "hi": "Salut", + "my_dish": "MON PLAT", + "dark_mode": "MODE SOMBRE", + "logout": "SE DÉCONNECTER ", + "no_dish_available": "Il n'y a actuellement aucun plat disponible à afficher", + "generate_recipe_contents": "Génération du contenu de la recette", + "connection_error": "Il semble que nous ayons un problème de connexion au serveur. Veuillez réessayer lorsque vous avez un réseau plus fort" +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 5beb75f..09b4d13 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,6 +16,7 @@ Future main() async { await setupLocator(); setupDialogUi(); setupBottomSheetUi(); + await S.load(const Locale.fromSubtags(languageCode: 'en')); runApp(const MainApp()); } @@ -37,6 +38,7 @@ class MainApp extends StatelessWidget { navigatorObservers: [ StackedService.routeObserver, ], + //locale: , localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, diff --git a/lib/ui/widgets/common/app_drawer/app_drawer.dart b/lib/ui/widgets/common/app_drawer/app_drawer.dart index 525796b..be695b6 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:receipe_app/enums/languages.dart'; import 'package:receipe_app/generated/l10n.dart'; import 'package:receipe_app/ui/common/app_images.dart'; import 'package:receipe_app/ui/extension/build_context_extension.dart'; @@ -9,10 +10,6 @@ import 'app_drawer_model.dart'; import 'dart:io'; import 'package:flutter/cupertino.dart'; -enum Languages { english, french } - -//Languages selectedLanguage = Languages.english; - class AppDrawer extends StackedView { const AppDrawer({super.key}); @@ -109,7 +106,7 @@ class AppDrawer extends StackedView { padding: EdgeInsets.all(20), isExpanded: true, borderRadius: BorderRadius.all(Radius.circular(10)), - value: viewModel.selectedLanguages, + value: viewModel.selectedLanguage, items: Languages.values .map( (language) => DropdownMenuItem( @@ -121,7 +118,9 @@ class AppDrawer extends StackedView { onChanged: (value) { if (value == null) return; - viewModel.toggleLanguage = value; + final subtag = value.name.substring(0, 2); + S.load(Locale.fromSubtags(languageCode: subtag)); + viewModel.toggleLanguage(value); }, ), ), diff --git a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart index 4710b75..dac5189 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart @@ -1,12 +1,12 @@ import 'package:receipe_app/app/app.router.dart'; import 'package:receipe_app/data_model/user.dart'; +import 'package:receipe_app/enums/languages.dart'; import 'package:receipe_app/services/secure_storage_service.dart'; import 'package:receipe_app/services/user_service.dart'; import 'package:receipe_app/ui/widgets/common/app_drawer/app_drawer.dart'; import 'package:stacked/stacked.dart'; import 'package:receipe_app/app/app.locator.dart'; import 'package:receipe_app/app/app.logger.dart'; - import 'package:stacked_services/stacked_services.dart'; class AppDrawerModel extends ReactiveViewModel { @@ -20,10 +20,10 @@ class AppDrawerModel extends ReactiveViewModel { Languages _selectedLanguage = Languages.english; - Languages get selectedLanguages => _selectedLanguage; + Languages get selectedLanguage => _selectedLanguage; //setter to toggle and refresh Language dropdown - set toggleLanguage(Languages value) { + void toggleLanguage(Languages value) { _selectedLanguage = value; rebuildUi(); } From 86c0669d3487be66889f091a4563660cfb6aae40 Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Fri, 8 Mar 2024 23:53:53 +0100 Subject: [PATCH 03/10] fix/localization --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 09b4d13..5cc6f22 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -38,7 +38,7 @@ class MainApp extends StatelessWidget { navigatorObservers: [ StackedService.routeObserver, ], - //locale: , + //locale: Locale.fromSubtags(languageCode: 'en') , localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, From 99633a8484e5daa60d8feb08d4a24a99df6dc5db Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Sat, 9 Mar 2024 00:00:09 +0100 Subject: [PATCH 04/10] chore/ localization_service --- lib/app/app.dart | 2 ++ lib/app/app.locator.dart | 2 ++ lib/main.dart | 2 +- lib/services/localiazation_service.dart | 1 + test/helpers/test_helpers.dart | 10 +++++++ test/helpers/test_helpers.mocks.dart | 30 +++++++++++++++++++ test/services/localiazation_service_test.dart | 11 +++++++ 7 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 lib/services/localiazation_service.dart create mode 100644 test/services/localiazation_service_test.dart diff --git a/lib/app/app.dart b/lib/app/app.dart index f8c7b45..2f49026 100644 --- a/lib/app/app.dart +++ b/lib/app/app.dart @@ -21,6 +21,7 @@ import 'package:receipe_app/services/dish_service.dart'; import 'package:receipe_app/services/database_service.dart'; import 'package:receipe_app/services/user_service.dart'; import 'package:receipe_app/ui/views/single_user/single_user_view.dart'; +import 'package:receipe_app/services/localiazation_service.dart'; // @stacked-import @StackedApp( @@ -49,6 +50,7 @@ import 'package:receipe_app/ui/views/single_user/single_user_view.dart'; LazySingleton(classType: DatabaseMigrationService), InitializableSingleton(classType: DatabaseService), LazySingleton(classType: UserService), + LazySingleton(classType: LocaliazationService), // @stacked-service ], bottomsheets: [ diff --git a/lib/app/app.locator.dart b/lib/app/app.locator.dart index d6fa87c..037b433 100644 --- a/lib/app/app.locator.dart +++ b/lib/app/app.locator.dart @@ -17,6 +17,7 @@ import '../services/database_service.dart'; import '../services/dio_service.dart'; import '../services/dish_service.dart'; import '../services/event_service.dart'; +import '../services/localiazation_service.dart'; import '../services/secure_storage_service.dart'; import '../services/user_service.dart'; @@ -45,4 +46,5 @@ Future setupLocator({ locator.registerSingleton(databaseService); locator.registerLazySingleton(() => UserService()); + locator.registerLazySingleton(() => LocaliazationService()); } diff --git a/lib/main.dart b/lib/main.dart index 5cc6f22..5115449 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -38,7 +38,7 @@ class MainApp extends StatelessWidget { navigatorObservers: [ StackedService.routeObserver, ], - //locale: Locale.fromSubtags(languageCode: 'en') , + locale: Locale.fromSubtags(languageCode: 'fr'), localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, diff --git a/lib/services/localiazation_service.dart b/lib/services/localiazation_service.dart new file mode 100644 index 0000000..1291d4e --- /dev/null +++ b/lib/services/localiazation_service.dart @@ -0,0 +1 @@ +class LocaliazationService {} diff --git a/test/helpers/test_helpers.dart b/test/helpers/test_helpers.dart index 6e60932..57faff5 100644 --- a/test/helpers/test_helpers.dart +++ b/test/helpers/test_helpers.dart @@ -10,6 +10,7 @@ import 'package:receipe_app/services/authentication_service.dart'; import 'package:receipe_app/services/dish_service.dart'; import 'package:receipe_app/services/database_service.dart'; import 'package:receipe_app/services/user_service.dart'; +import 'package:receipe_app/services/localiazation_service.dart'; // @stacked-import import 'test_helpers.mocks.dart'; @@ -25,6 +26,7 @@ import 'test_helpers.mocks.dart'; MockSpec(onMissingStub: OnMissingStub.returnDefault), MockSpec(onMissingStub: OnMissingStub.returnDefault), MockSpec(onMissingStub: OnMissingStub.returnDefault), + MockSpec(onMissingStub: OnMissingStub.returnDefault), // @stacked-mock-spec ]) void registerServices() { @@ -38,6 +40,7 @@ void registerServices() { getAndRegisterDishService(); getAndRegisterDatabaseService(); getAndRegisterUserService(); + getAndRegisterLocaliazationService(); // @stacked-mock-register } @@ -142,6 +145,13 @@ MockUserService getAndRegisterUserService() { locator.registerSingleton(service); return service; } + +MockLocaliazationService getAndRegisterLocaliazationService() { + _removeRegistrationIfExists(); + final service = MockLocaliazationService(); + locator.registerSingleton(service); + return service; +} // @stacked-mock-create void _removeRegistrationIfExists() { diff --git a/test/helpers/test_helpers.mocks.dart b/test/helpers/test_helpers.mocks.dart index 72a8236..2ff63c3 100644 --- a/test/helpers/test_helpers.mocks.dart +++ b/test/helpers/test_helpers.mocks.dart @@ -20,6 +20,7 @@ import 'package:receipe_app/services/database_service.dart' as _i19; import 'package:receipe_app/services/dio_service.dart' as _i11; import 'package:receipe_app/services/dish_service.dart' as _i17; import 'package:receipe_app/services/event_service.dart' as _i8; +import 'package:receipe_app/services/localiazation_service.dart' as _i21; import 'package:receipe_app/services/secure_storage_service.dart' as _i10; import 'package:receipe_app/services/user_service.dart' as _i20; import 'package:sqflite/sqflite.dart' as _i3; @@ -944,6 +945,29 @@ class MockDishService extends _i1.Mock implements _i17.DishService { ), )), ) as _i6.Future<_i2.RecipesResponseModel>); + @override + _i6.Future<_i2.RecipesResponseModel> getUserDishes() => (super.noSuchMethod( + Invocation.method( + #getUserDishes, + [], + ), + returnValue: _i6.Future<_i2.RecipesResponseModel>.value( + _FakeRecipesResponseModel_0( + this, + Invocation.method( + #getUserDishes, + [], + ), + )), + returnValueForMissingStub: _i6.Future<_i2.RecipesResponseModel>.value( + _FakeRecipesResponseModel_0( + this, + Invocation.method( + #getUserDishes, + [], + ), + )), + ) as _i6.Future<_i2.RecipesResponseModel>); } /// A class which mocks [DatabaseService]. @@ -1070,3 +1094,9 @@ class MockUserService extends _i1.Mock implements _i20.UserService { returnValueForMissingStub: null, ); } + +/// A class which mocks [LocaliazationService]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockLocaliazationService extends _i1.Mock + implements _i21.LocaliazationService {} diff --git a/test/services/localiazation_service_test.dart b/test/services/localiazation_service_test.dart new file mode 100644 index 0000000..df7d1be --- /dev/null +++ b/test/services/localiazation_service_test.dart @@ -0,0 +1,11 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:receipe_app/app/app.locator.dart'; + +import '../helpers/test_helpers.dart'; + +void main() { + group('LocaliazationServiceTest -', () { + setUp(() => registerServices()); + tearDown(() => locator.reset()); + }); +} From 352ccd383bf73b8b225431559adb54442795f0dd Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Sat, 9 Mar 2024 09:19:28 +0100 Subject: [PATCH 05/10] chore/ localization_fix --- lib/app/app.dart | 6 +++--- lib/app/app.locator.dart | 4 ++-- lib/main.dart | 4 +++- lib/services/localiazation_service.dart | 1 - lib/services/localization_service.dart | 1 + .../common/app_drawer/app_drawer_model.dart | 3 +++ test/helpers/test_helpers.dart | 17 ++++++++++------- test/helpers/test_helpers.mocks.dart | 8 ++++---- ...test.dart => localization_service_test.dart} | 2 +- 9 files changed, 27 insertions(+), 19 deletions(-) delete mode 100644 lib/services/localiazation_service.dart create mode 100644 lib/services/localization_service.dart rename test/services/{localiazation_service_test.dart => localization_service_test.dart} (84%) diff --git a/lib/app/app.dart b/lib/app/app.dart index 2f49026..5f428d1 100644 --- a/lib/app/app.dart +++ b/lib/app/app.dart @@ -21,7 +21,7 @@ import 'package:receipe_app/services/dish_service.dart'; import 'package:receipe_app/services/database_service.dart'; import 'package:receipe_app/services/user_service.dart'; import 'package:receipe_app/ui/views/single_user/single_user_view.dart'; -import 'package:receipe_app/services/localiazation_service.dart'; +import 'package:receipe_app/services/localization_service.dart'; // @stacked-import @StackedApp( @@ -50,7 +50,7 @@ import 'package:receipe_app/services/localiazation_service.dart'; LazySingleton(classType: DatabaseMigrationService), InitializableSingleton(classType: DatabaseService), LazySingleton(classType: UserService), - LazySingleton(classType: LocaliazationService), + LazySingleton(classType: LocalizationService), // @stacked-service ], bottomsheets: [ @@ -64,4 +64,4 @@ import 'package:receipe_app/services/localiazation_service.dart'; ], logger: StackedLogger(), ) -class App {} +class App {} \ No newline at end of file diff --git a/lib/app/app.locator.dart b/lib/app/app.locator.dart index 037b433..57fed1f 100644 --- a/lib/app/app.locator.dart +++ b/lib/app/app.locator.dart @@ -17,7 +17,7 @@ import '../services/database_service.dart'; import '../services/dio_service.dart'; import '../services/dish_service.dart'; import '../services/event_service.dart'; -import '../services/localiazation_service.dart'; +import '../services/localization_service.dart'; import '../services/secure_storage_service.dart'; import '../services/user_service.dart'; @@ -46,5 +46,5 @@ Future setupLocator({ locator.registerSingleton(databaseService); locator.registerLazySingleton(() => UserService()); - locator.registerLazySingleton(() => LocaliazationService()); + locator.registerLazySingleton(() => LocalizationService()); } diff --git a/lib/main.dart b/lib/main.dart index 5115449..8d29aee 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:receipe_app/services/localization_service.dart'; import 'package:stacked_services/stacked_services.dart'; import 'app/app.bottomsheets.dart'; import 'app/app.dialogs.dart'; @@ -38,7 +39,8 @@ class MainApp extends StatelessWidget { navigatorObservers: [ StackedService.routeObserver, ], - locale: Locale.fromSubtags(languageCode: 'fr'), + //locale: Locale.fromSubtags(languageCode: 'en'), + //locale: LocalizationService, localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, diff --git a/lib/services/localiazation_service.dart b/lib/services/localiazation_service.dart deleted file mode 100644 index 1291d4e..0000000 --- a/lib/services/localiazation_service.dart +++ /dev/null @@ -1 +0,0 @@ -class LocaliazationService {} diff --git a/lib/services/localization_service.dart b/lib/services/localization_service.dart new file mode 100644 index 0000000..03f44f5 --- /dev/null +++ b/lib/services/localization_service.dart @@ -0,0 +1 @@ +class LocalizationService {} diff --git a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart index dac5189..96a9a37 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart @@ -1,6 +1,8 @@ import 'package:receipe_app/app/app.router.dart'; import 'package:receipe_app/data_model/user.dart'; import 'package:receipe_app/enums/languages.dart'; +//import 'package:receipe_app/services/localiazation_service_service.dart'; +import 'package:receipe_app/services/localization_service.dart'; import 'package:receipe_app/services/secure_storage_service.dart'; import 'package:receipe_app/services/user_service.dart'; import 'package:receipe_app/ui/widgets/common/app_drawer/app_drawer.dart'; @@ -13,6 +15,7 @@ class AppDrawerModel extends ReactiveViewModel { final _navigationService = locator(); final _userService = locator(); final _secureStorageService = locator(); + //final _localizationService = locator; final _logger = getLogger('App_Drawer'); diff --git a/test/helpers/test_helpers.dart b/test/helpers/test_helpers.dart index 57faff5..af387d3 100644 --- a/test/helpers/test_helpers.dart +++ b/test/helpers/test_helpers.dart @@ -10,7 +10,7 @@ import 'package:receipe_app/services/authentication_service.dart'; import 'package:receipe_app/services/dish_service.dart'; import 'package:receipe_app/services/database_service.dart'; import 'package:receipe_app/services/user_service.dart'; -import 'package:receipe_app/services/localiazation_service.dart'; +import 'package:receipe_app/services/localization_service.dart'; // @stacked-import import 'test_helpers.mocks.dart'; @@ -26,7 +26,8 @@ import 'test_helpers.mocks.dart'; MockSpec(onMissingStub: OnMissingStub.returnDefault), MockSpec(onMissingStub: OnMissingStub.returnDefault), MockSpec(onMissingStub: OnMissingStub.returnDefault), - MockSpec(onMissingStub: OnMissingStub.returnDefault), + MockSpec(onMissingStub: OnMissingStub.returnDefault), + // @stacked-mock-spec ]) void registerServices() { @@ -40,7 +41,7 @@ void registerServices() { getAndRegisterDishService(); getAndRegisterDatabaseService(); getAndRegisterUserService(); - getAndRegisterLocaliazationService(); + getAndRegisterLocalizationService(); // @stacked-mock-register } @@ -146,12 +147,14 @@ MockUserService getAndRegisterUserService() { return service; } -MockLocaliazationService getAndRegisterLocaliazationService() { - _removeRegistrationIfExists(); - final service = MockLocaliazationService(); - locator.registerSingleton(service); +MockLocalizationService getAndRegisterLocalizationService() { + _removeRegistrationIfExists(); + final service = MockLocalizationService(); + locator.registerSingleton(service); return service; } + +// // @stacked-mock-create void _removeRegistrationIfExists() { diff --git a/test/helpers/test_helpers.mocks.dart b/test/helpers/test_helpers.mocks.dart index 2ff63c3..0a8f353 100644 --- a/test/helpers/test_helpers.mocks.dart +++ b/test/helpers/test_helpers.mocks.dart @@ -20,7 +20,7 @@ import 'package:receipe_app/services/database_service.dart' as _i19; import 'package:receipe_app/services/dio_service.dart' as _i11; import 'package:receipe_app/services/dish_service.dart' as _i17; import 'package:receipe_app/services/event_service.dart' as _i8; -import 'package:receipe_app/services/localiazation_service.dart' as _i21; +import 'package:receipe_app/services/localization_service.dart' as _i21; import 'package:receipe_app/services/secure_storage_service.dart' as _i10; import 'package:receipe_app/services/user_service.dart' as _i20; import 'package:sqflite/sqflite.dart' as _i3; @@ -1095,8 +1095,8 @@ class MockUserService extends _i1.Mock implements _i20.UserService { ); } -/// A class which mocks [LocaliazationService]. +/// A class which mocks [LocalizationService]. /// /// See the documentation for Mockito's code generation for more information. -class MockLocaliazationService extends _i1.Mock - implements _i21.LocaliazationService {} +class MockLocalizationService extends _i1.Mock + implements _i21.LocalizationService {} diff --git a/test/services/localiazation_service_test.dart b/test/services/localization_service_test.dart similarity index 84% rename from test/services/localiazation_service_test.dart rename to test/services/localization_service_test.dart index df7d1be..9326aed 100644 --- a/test/services/localiazation_service_test.dart +++ b/test/services/localization_service_test.dart @@ -4,7 +4,7 @@ import 'package:receipe_app/app/app.locator.dart'; import '../helpers/test_helpers.dart'; void main() { - group('LocaliazationServiceTest -', () { + group('LocalizationServiceTest -', () { setUp(() => registerServices()); tearDown(() => locator.reset()); }); From 2b9ebf2e23303079797d088438751c85cb0041c8 Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Sat, 9 Mar 2024 15:48:07 +0100 Subject: [PATCH 06/10] fix_localization_fix_working --- lib/main.dart | 2 +- lib/services/localization_service.dart | 21 ++++++++++++++++++- .../widgets/common/app_drawer/app_drawer.dart | 9 ++++++-- .../common/app_drawer/app_drawer_model.dart | 14 +++++++------ 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8d29aee..4054d21 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -40,7 +40,7 @@ class MainApp extends StatelessWidget { StackedService.routeObserver, ], //locale: Locale.fromSubtags(languageCode: 'en'), - //locale: LocalizationService, + locale: LocalizationService().currentLocale, localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, diff --git a/lib/services/localization_service.dart b/lib/services/localization_service.dart index 03f44f5..d2e84b6 100644 --- a/lib/services/localization_service.dart +++ b/lib/services/localization_service.dart @@ -1 +1,20 @@ -class LocalizationService {} +import 'dart:ui'; + +import 'package:receipe_app/enums/languages.dart'; + +class LocalizationService { + //Locale.fromSubtags(languageCode: 'en'), + + //Hold current app locale + Locale _currentLocale = Locale.fromSubtags(languageCode: 'en'); + Locale get currentLocale => _currentLocale; + + //refactoring app-drawer VM localization + Languages _selectedLanguage = Languages.english; + Languages get selectedLanguage => _selectedLanguage; + + //function to assign locale + void assignLocale(Languages value) { + _selectedLanguage = value; + } +} diff --git a/lib/ui/widgets/common/app_drawer/app_drawer.dart b/lib/ui/widgets/common/app_drawer/app_drawer.dart index be695b6..a03e6b1 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:receipe_app/app/app.logger.dart'; import 'package:receipe_app/enums/languages.dart'; import 'package:receipe_app/generated/l10n.dart'; import 'package:receipe_app/ui/common/app_images.dart'; @@ -11,7 +12,7 @@ import 'dart:io'; import 'package:flutter/cupertino.dart'; class AppDrawer extends StackedView { - const AppDrawer({super.key}); + AppDrawer({super.key}); @override AppDrawerModel viewModelBuilder( @@ -19,6 +20,7 @@ class AppDrawer extends StackedView { ) => AppDrawerModel(); + final _logger = getLogger('AppDrawer'); @override Widget builder( BuildContext context, @@ -117,9 +119,12 @@ class AppDrawer extends StackedView { .toList(), onChanged: (value) { if (value == null) return; + _logger.i(value); final subtag = value.name.substring(0, 2); - S.load(Locale.fromSubtags(languageCode: subtag)); + S.load(Locale.fromSubtags( + languageCode: + subtag)); //Load the current locale using the subtag viewModel.toggleLanguage(value); }, ), diff --git a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart index 96a9a37..1b92eae 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart @@ -15,19 +15,21 @@ class AppDrawerModel extends ReactiveViewModel { final _navigationService = locator(); final _userService = locator(); final _secureStorageService = locator(); - //final _localizationService = locator; + final _localizationService = locator(); - final _logger = getLogger('App_Drawer'); + final _logger = getLogger('App_Drawer ViewModel'); User? get user => _userService.user; - Languages _selectedLanguage = Languages.english; + //Languages _selectedLanguage = Languages.english; - Languages get selectedLanguage => _selectedLanguage; + Languages get selectedLanguage => _localizationService.selectedLanguage; - //setter to toggle and refresh Language dropdown + //toggle and refresh Language dropdown void toggleLanguage(Languages value) { - _selectedLanguage = value; + _logger.i(value); + + _localizationService.assignLocale(value); rebuildUi(); } From 7bc80a969d9b6af76f914c0336422d0a52f44c20 Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Sat, 9 Mar 2024 15:49:56 +0100 Subject: [PATCH 07/10] fix/ localization_fix_working --- lib/services/localization_service.dart | 6 +++--- lib/ui/widgets/common/app_drawer/app_drawer_model.dart | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/services/localization_service.dart b/lib/services/localization_service.dart index d2e84b6..2c06e10 100644 --- a/lib/services/localization_service.dart +++ b/lib/services/localization_service.dart @@ -10,11 +10,11 @@ class LocalizationService { Locale get currentLocale => _currentLocale; //refactoring app-drawer VM localization - Languages _selectedLanguage = Languages.english; - Languages get selectedLanguage => _selectedLanguage; + Languages _selectedLocale = Languages.english; + Languages get selectedLocale => _selectedLocale; //function to assign locale void assignLocale(Languages value) { - _selectedLanguage = value; + _selectedLocale = value; } } diff --git a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart index 1b92eae..60c52f5 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart @@ -23,7 +23,7 @@ class AppDrawerModel extends ReactiveViewModel { //Languages _selectedLanguage = Languages.english; - Languages get selectedLanguage => _localizationService.selectedLanguage; + Languages get selectedLanguage => _localizationService.selectedLocale; //toggle and refresh Language dropdown void toggleLanguage(Languages value) { From 70cb61d8cafc38d44b71bd7ce637bdb77d20354d Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Sat, 9 Mar 2024 16:03:36 +0100 Subject: [PATCH 08/10] fieat/localization_fr --- lib/main.dart | 1 - lib/services/localization_service.dart | 2 -- lib/ui/widgets/common/app_drawer/app_drawer_model.dart | 2 -- 3 files changed, 5 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 4054d21..14e1700 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -39,7 +39,6 @@ class MainApp extends StatelessWidget { navigatorObservers: [ StackedService.routeObserver, ], - //locale: Locale.fromSubtags(languageCode: 'en'), locale: LocalizationService().currentLocale, localizationsDelegates: const [ S.delegate, diff --git a/lib/services/localization_service.dart b/lib/services/localization_service.dart index 2c06e10..b112017 100644 --- a/lib/services/localization_service.dart +++ b/lib/services/localization_service.dart @@ -3,8 +3,6 @@ import 'dart:ui'; import 'package:receipe_app/enums/languages.dart'; class LocalizationService { - //Locale.fromSubtags(languageCode: 'en'), - //Hold current app locale Locale _currentLocale = Locale.fromSubtags(languageCode: 'en'); Locale get currentLocale => _currentLocale; diff --git a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart index 60c52f5..4d5d898 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart @@ -21,8 +21,6 @@ class AppDrawerModel extends ReactiveViewModel { User? get user => _userService.user; - //Languages _selectedLanguage = Languages.english; - Languages get selectedLanguage => _localizationService.selectedLocale; //toggle and refresh Language dropdown From 91945d47e84c0b0c6743fbdcc969f3136df2ad88 Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Fri, 15 Mar 2024 02:00:55 +0100 Subject: [PATCH 09/10] fix/ localization_fr --- lib/ui/widgets/common/app_drawer/app_drawer.dart | 8 +++++--- lib/ui/widgets/common/app_drawer/app_drawer_model.dart | 2 -- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ui/widgets/common/app_drawer/app_drawer.dart b/lib/ui/widgets/common/app_drawer/app_drawer.dart index a03e6b1..b577086 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer.dart @@ -122,9 +122,11 @@ class AppDrawer extends StackedView { _logger.i(value); final subtag = value.name.substring(0, 2); - S.load(Locale.fromSubtags( - languageCode: - subtag)); //Load the current locale using the subtag + S.load( + Locale.fromSubtags( + languageCode: subtag, + ), + ); //Load the current locale using the subtag viewModel.toggleLanguage(value); }, ), diff --git a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart index 4d5d898..0001e21 100644 --- a/lib/ui/widgets/common/app_drawer/app_drawer_model.dart +++ b/lib/ui/widgets/common/app_drawer/app_drawer_model.dart @@ -1,11 +1,9 @@ import 'package:receipe_app/app/app.router.dart'; import 'package:receipe_app/data_model/user.dart'; import 'package:receipe_app/enums/languages.dart'; -//import 'package:receipe_app/services/localiazation_service_service.dart'; import 'package:receipe_app/services/localization_service.dart'; import 'package:receipe_app/services/secure_storage_service.dart'; import 'package:receipe_app/services/user_service.dart'; -import 'package:receipe_app/ui/widgets/common/app_drawer/app_drawer.dart'; import 'package:stacked/stacked.dart'; import 'package:receipe_app/app/app.locator.dart'; import 'package:receipe_app/app/app.logger.dart'; From 9438e309f162901bd81bc4b766f2e29df5a9497a Mon Sep 17 00:00:00 2001 From: ClementPeter Date: Mon, 6 May 2024 07:31:27 +0100 Subject: [PATCH 10/10] localization_french --- test/helpers/test_helpers.mocks.dart | 384 +++++++++++++++------------ 1 file changed, 211 insertions(+), 173 deletions(-) diff --git a/test/helpers/test_helpers.mocks.dart b/test/helpers/test_helpers.mocks.dart index 0a8f353..d4eb2ce 100644 --- a/test/helpers/test_helpers.mocks.dart +++ b/test/helpers/test_helpers.mocks.dart @@ -3,10 +3,10 @@ // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i6; -import 'dart:ui' as _i7; +import 'dart:async' as _i7; +import 'dart:ui' as _i4; -import 'package:flutter/material.dart' as _i5; +import 'package:flutter/material.dart' as _i6; import 'package:mockito/mockito.dart' as _i1; import 'package:receipe_app/data_model/create_dish_info.dart' as _i18; import 'package:receipe_app/data_model/event.dart' as _i9; @@ -15,6 +15,7 @@ import 'package:receipe_app/data_model/login_response.dart' as _i13; import 'package:receipe_app/data_model/recipes_response.dart' as _i2; import 'package:receipe_app/data_model/register_model.dart' as _i16; import 'package:receipe_app/data_model/user.dart' as _i15; +import 'package:receipe_app/enums/languages.dart' as _i22; import 'package:receipe_app/services/authentication_service.dart' as _i12; import 'package:receipe_app/services/database_service.dart' as _i19; import 'package:receipe_app/services/dio_service.dart' as _i11; @@ -24,7 +25,7 @@ import 'package:receipe_app/services/localization_service.dart' as _i21; import 'package:receipe_app/services/secure_storage_service.dart' as _i10; import 'package:receipe_app/services/user_service.dart' as _i20; import 'package:sqflite/sqflite.dart' as _i3; -import 'package:stacked_services/stacked_services.dart' as _i4; +import 'package:stacked_services/stacked_services.dart' as _i5; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -58,10 +59,20 @@ class _FakeDatabase_1 extends _i1.SmartFake implements _i3.Database { ); } +class _FakeLocale_2 extends _i1.SmartFake implements _i4.Locale { + _FakeLocale_2( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + /// A class which mocks [NavigationService]. /// /// See the documentation for Mockito's code generation for more information. -class MockNavigationService extends _i1.Mock implements _i4.NavigationService { +class MockNavigationService extends _i1.Mock implements _i5.NavigationService { @override String get previousRoute => (super.noSuchMethod( Invocation.getter(#previousRoute), @@ -75,14 +86,14 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { returnValueForMissingStub: '', ) as String); @override - _i5.GlobalKey<_i5.NavigatorState>? nestedNavigationKey(int? index) => + _i6.GlobalKey<_i6.NavigatorState>? nestedNavigationKey(int? index) => (super.noSuchMethod( Invocation.method( #nestedNavigationKey, [index], ), returnValueForMissingStub: null, - ) as _i5.GlobalKey<_i5.NavigatorState>?); + ) as _i6.GlobalKey<_i6.NavigatorState>?); @override void config({ bool? enableLog, @@ -90,7 +101,7 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { bool? defaultOpaqueRoute, Duration? defaultDurationTransition, bool? defaultGlobalState, - _i4.Transition? defaultTransitionStyle, + _i5.Transition? defaultTransitionStyle, String? defaultTransition, }) => super.noSuchMethod( @@ -110,18 +121,18 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { returnValueForMissingStub: null, ); @override - _i6.Future? navigateWithTransition( - _i5.Widget? page, { + _i7.Future? navigateWithTransition( + _i6.Widget? page, { bool? opaque, String? transition = r'', Duration? duration, bool? popGesture, int? id, - _i5.Curve? curve, + _i6.Curve? curve, bool? fullscreenDialog = false, bool? preventDuplicates = true, - _i4.Transition? transitionClass, - _i4.Transition? transitionStyle, + _i5.Transition? transitionClass, + _i5.Transition? transitionStyle, String? routeName, }) => (super.noSuchMethod( @@ -143,20 +154,20 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? replaceWithTransition( - _i5.Widget? page, { + _i7.Future? replaceWithTransition( + _i6.Widget? page, { bool? opaque, String? transition = r'', Duration? duration, bool? popGesture, int? id, - _i5.Curve? curve, + _i6.Curve? curve, bool? fullscreenDialog = false, bool? preventDuplicates = true, - _i4.Transition? transitionClass, - _i4.Transition? transitionStyle, + _i5.Transition? transitionClass, + _i5.Transition? transitionStyle, String? routeName, }) => (super.noSuchMethod( @@ -178,7 +189,7 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override bool back({ dynamic result, @@ -198,7 +209,7 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { ) as bool); @override void popUntil( - _i5.RoutePredicate? predicate, { + _i6.RoutePredicate? predicate, { int? id, }) => super.noSuchMethod( @@ -218,13 +229,13 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { returnValueForMissingStub: null, ); @override - _i6.Future? navigateTo( + _i7.Future? navigateTo( String? routeName, { dynamic arguments, int? id, bool? preventDuplicates = true, Map? parameters, - _i5.RouteTransitionsBuilder? transition, + _i6.RouteTransitionsBuilder? transition, }) => (super.noSuchMethod( Invocation.method( @@ -239,20 +250,20 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? navigateToView( - _i5.Widget? view, { + _i7.Future? navigateToView( + _i6.Widget? view, { dynamic arguments, int? id, bool? opaque, - _i5.Curve? curve, + _i6.Curve? curve, Duration? duration, bool? fullscreenDialog = false, bool? popGesture, bool? preventDuplicates = true, - _i4.Transition? transition, - _i4.Transition? transitionStyle, + _i5.Transition? transition, + _i5.Transition? transitionStyle, }) => (super.noSuchMethod( Invocation.method( @@ -272,15 +283,15 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? replaceWith( + _i7.Future? replaceWith( String? routeName, { dynamic arguments, int? id, bool? preventDuplicates = true, Map? parameters, - _i5.RouteTransitionsBuilder? transition, + _i6.RouteTransitionsBuilder? transition, }) => (super.noSuchMethod( Invocation.method( @@ -295,9 +306,9 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? clearStackAndShow( + _i7.Future? clearStackAndShow( String? routeName, { dynamic arguments, int? id, @@ -314,10 +325,10 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? clearStackAndShowView( - _i5.Widget? view, { + _i7.Future? clearStackAndShowView( + _i6.Widget? view, { dynamic arguments, int? id, }) => @@ -331,9 +342,9 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? clearTillFirstAndShow( + _i7.Future? clearTillFirstAndShow( String? routeName, { dynamic arguments, int? id, @@ -352,10 +363,10 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? clearTillFirstAndShowView( - _i5.Widget? view, { + _i7.Future? clearTillFirstAndShowView( + _i6.Widget? view, { dynamic arguments, int? id, }) => @@ -369,11 +380,11 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); @override - _i6.Future? pushNamedAndRemoveUntil( + _i7.Future? pushNamedAndRemoveUntil( String? routeName, { - _i5.RoutePredicate? predicate, + _i6.RoutePredicate? predicate, dynamic arguments, int? id, }) => @@ -388,16 +399,16 @@ class MockNavigationService extends _i1.Mock implements _i4.NavigationService { }, ), returnValueForMissingStub: null, - ) as _i6.Future?); + ) as _i7.Future?); } /// A class which mocks [BottomSheetService]. /// /// See the documentation for Mockito's code generation for more information. class MockBottomSheetService extends _i1.Mock - implements _i4.BottomSheetService { + implements _i5.BottomSheetService { @override - void setCustomSheetBuilders(Map? builders) => + void setCustomSheetBuilders(Map? builders) => super.noSuchMethod( Invocation.method( #setCustomSheetBuilders, @@ -406,7 +417,7 @@ class MockBottomSheetService extends _i1.Mock returnValueForMissingStub: null, ); @override - _i6.Future<_i4.SheetResponse?> showBottomSheet({ + _i7.Future<_i5.SheetResponse?> showBottomSheet({ required String? title, String? description, String? confirmButtonTitle = r'Ok', @@ -437,12 +448,12 @@ class MockBottomSheetService extends _i1.Mock #useRootNavigator: useRootNavigator, }, ), - returnValue: _i6.Future<_i4.SheetResponse?>.value(), + returnValue: _i7.Future<_i5.SheetResponse?>.value(), returnValueForMissingStub: - _i6.Future<_i4.SheetResponse?>.value(), - ) as _i6.Future<_i4.SheetResponse?>); + _i7.Future<_i5.SheetResponse?>.value(), + ) as _i7.Future<_i5.SheetResponse?>); @override - _i6.Future<_i4.SheetResponse?> showCustomSheet({ + _i7.Future<_i5.SheetResponse?> showCustomSheet({ dynamic variant, String? title, String? description, @@ -455,7 +466,7 @@ class MockBottomSheetService extends _i1.Mock bool? showIconInAdditionalButton = false, String? additionalButtonTitle, bool? takesInput = false, - _i7.Color? barrierColor = const _i7.Color(2315255808), + _i4.Color? barrierColor = const _i4.Color(2315255808), bool? barrierDismissible = true, bool? isScrollControlled = false, String? barrierLabel = r'', @@ -497,11 +508,11 @@ class MockBottomSheetService extends _i1.Mock #useRootNavigator: useRootNavigator, }, ), - returnValue: _i6.Future<_i4.SheetResponse?>.value(), - returnValueForMissingStub: _i6.Future<_i4.SheetResponse?>.value(), - ) as _i6.Future<_i4.SheetResponse?>); + returnValue: _i7.Future<_i5.SheetResponse?>.value(), + returnValueForMissingStub: _i7.Future<_i5.SheetResponse?>.value(), + ) as _i7.Future<_i5.SheetResponse?>); @override - void completeSheet(_i4.SheetResponse? response) => + void completeSheet(_i5.SheetResponse? response) => super.noSuchMethod( Invocation.method( #completeSheet, @@ -514,10 +525,10 @@ class MockBottomSheetService extends _i1.Mock /// A class which mocks [DialogService]. /// /// See the documentation for Mockito's code generation for more information. -class MockDialogService extends _i1.Mock implements _i4.DialogService { +class MockDialogService extends _i1.Mock implements _i5.DialogService { @override void registerCustomDialogBuilders( - Map? builders) => + Map? builders) => super.noSuchMethod( Invocation.method( #registerCustomDialogBuilders, @@ -528,10 +539,10 @@ class MockDialogService extends _i1.Mock implements _i4.DialogService { @override void registerCustomDialogBuilder({ required dynamic variant, - required _i5.Widget Function( - _i5.BuildContext, - _i4.DialogRequest, - dynamic Function(_i4.DialogResponse), + required _i6.Widget Function( + _i6.BuildContext, + _i5.DialogRequest, + dynamic Function(_i5.DialogResponse), )? builder, }) => super.noSuchMethod( @@ -546,15 +557,15 @@ class MockDialogService extends _i1.Mock implements _i4.DialogService { returnValueForMissingStub: null, ); @override - _i6.Future<_i4.DialogResponse?> showDialog({ + _i7.Future<_i5.DialogResponse?> showDialog({ String? title, String? description, String? cancelTitle, - _i7.Color? cancelTitleColor, + _i4.Color? cancelTitleColor, String? buttonTitle = r'Ok', - _i7.Color? buttonTitleColor, + _i4.Color? buttonTitleColor, bool? barrierDismissible = false, - _i4.DialogPlatform? dialogPlatform, + _i5.DialogPlatform? dialogPlatform, }) => (super.noSuchMethod( Invocation.method( @@ -571,12 +582,12 @@ class MockDialogService extends _i1.Mock implements _i4.DialogService { #dialogPlatform: dialogPlatform, }, ), - returnValue: _i6.Future<_i4.DialogResponse?>.value(), + returnValue: _i7.Future<_i5.DialogResponse?>.value(), returnValueForMissingStub: - _i6.Future<_i4.DialogResponse?>.value(), - ) as _i6.Future<_i4.DialogResponse?>); + _i7.Future<_i5.DialogResponse?>.value(), + ) as _i7.Future<_i5.DialogResponse?>); @override - _i6.Future<_i4.DialogResponse?> showCustomDialog({ + _i7.Future<_i5.DialogResponse?> showCustomDialog({ dynamic variant, String? title, String? description, @@ -589,7 +600,7 @@ class MockDialogService extends _i1.Mock implements _i4.DialogService { bool? showIconInAdditionalButton = false, String? additionalButtonTitle, bool? takesInput = false, - _i7.Color? barrierColor = const _i7.Color(2315255808), + _i4.Color? barrierColor = const _i4.Color(2315255808), bool? barrierDismissible = false, String? barrierLabel = r'', bool? useSafeArea = true, @@ -621,19 +632,19 @@ class MockDialogService extends _i1.Mock implements _i4.DialogService { #data: data, }, ), - returnValue: _i6.Future<_i4.DialogResponse?>.value(), - returnValueForMissingStub: _i6.Future<_i4.DialogResponse?>.value(), - ) as _i6.Future<_i4.DialogResponse?>); + returnValue: _i7.Future<_i5.DialogResponse?>.value(), + returnValueForMissingStub: _i7.Future<_i5.DialogResponse?>.value(), + ) as _i7.Future<_i5.DialogResponse?>); @override - _i6.Future<_i4.DialogResponse?> showConfirmationDialog({ + _i7.Future<_i5.DialogResponse?> showConfirmationDialog({ String? title, String? description, String? cancelTitle = r'Cancel', - _i7.Color? cancelTitleColor, + _i4.Color? cancelTitleColor, String? confirmationTitle = r'Ok', - _i7.Color? confirmationTitleColor, + _i4.Color? confirmationTitleColor, bool? barrierDismissible = false, - _i4.DialogPlatform? dialogPlatform, + _i5.DialogPlatform? dialogPlatform, }) => (super.noSuchMethod( Invocation.method( @@ -650,12 +661,12 @@ class MockDialogService extends _i1.Mock implements _i4.DialogService { #dialogPlatform: dialogPlatform, }, ), - returnValue: _i6.Future<_i4.DialogResponse?>.value(), + returnValue: _i7.Future<_i5.DialogResponse?>.value(), returnValueForMissingStub: - _i6.Future<_i4.DialogResponse?>.value(), - ) as _i6.Future<_i4.DialogResponse?>); + _i7.Future<_i5.DialogResponse?>.value(), + ) as _i7.Future<_i5.DialogResponse?>); @override - void completeDialog(_i4.DialogResponse? response) => + void completeDialog(_i5.DialogResponse? response) => super.noSuchMethod( Invocation.method( #completeDialog, @@ -724,61 +735,61 @@ class MockEventService extends _i1.Mock implements _i8.EventService { class MockSecureStorageService extends _i1.Mock implements _i10.SecureStorageService { @override - _i6.Future deleteAccessToken() => (super.noSuchMethod( + _i7.Future deleteAccessToken() => (super.noSuchMethod( Invocation.method( #deleteAccessToken, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future deleteRefreshToken() => (super.noSuchMethod( + _i7.Future deleteRefreshToken() => (super.noSuchMethod( Invocation.method( #deleteRefreshToken, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future readAccessToken() => (super.noSuchMethod( + _i7.Future readAccessToken() => (super.noSuchMethod( Invocation.method( #readAccessToken, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future readRefreshToken() => (super.noSuchMethod( + _i7.Future readRefreshToken() => (super.noSuchMethod( Invocation.method( #readRefreshToken, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future writeAccessToken({String? token}) => (super.noSuchMethod( + _i7.Future writeAccessToken({String? token}) => (super.noSuchMethod( Invocation.method( #writeAccessToken, [], {#token: token}, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future writeRefreshToken({String? token}) => (super.noSuchMethod( + _i7.Future writeRefreshToken({String? token}) => (super.noSuchMethod( Invocation.method( #writeRefreshToken, [], {#token: token}, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); } /// A class which mocks [DioService]. @@ -786,7 +797,7 @@ class MockSecureStorageService extends _i1.Mock /// See the documentation for Mockito's code generation for more information. class MockDioService extends _i1.Mock implements _i11.DioService { @override - _i6.Future post({ + _i7.Future post({ required String? path, Map? data, Map? queryParameters, @@ -801,11 +812,11 @@ class MockDioService extends _i1.Mock implements _i11.DioService { #queryParameters: queryParameters, }, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future get({ + _i7.Future get({ required String? path, Map? queryParameters, }) => @@ -818,11 +829,11 @@ class MockDioService extends _i1.Mock implements _i11.DioService { #queryParameters: queryParameters, }, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future put({ + _i7.Future put({ required String? path, Map? data, Map? queryParameters, @@ -837,11 +848,11 @@ class MockDioService extends _i1.Mock implements _i11.DioService { #queryParameters: queryParameters, }, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future patch({ + _i7.Future patch({ required String? path, Map? data, Map? queryParameters, @@ -856,11 +867,11 @@ class MockDioService extends _i1.Mock implements _i11.DioService { #queryParameters: queryParameters, }, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future delete({ + _i7.Future delete({ required String? path, Map? data, Map? queryParameters, @@ -875,9 +886,9 @@ class MockDioService extends _i1.Mock implements _i11.DioService { #queryParameters: queryParameters, }, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); } /// A class which mocks [AuthenticationService]. @@ -886,26 +897,26 @@ class MockDioService extends _i1.Mock implements _i11.DioService { class MockAuthenticationService extends _i1.Mock implements _i12.AuthenticationService { @override - _i6.Future<_i13.LoginResponse?> login({_i14.LoginModel? loginModel}) => + _i7.Future<_i13.LoginResponse?> login({_i14.LoginModel? loginModel}) => (super.noSuchMethod( Invocation.method( #login, [], {#loginModel: loginModel}, ), - returnValue: _i6.Future<_i13.LoginResponse?>.value(), - returnValueForMissingStub: _i6.Future<_i13.LoginResponse?>.value(), - ) as _i6.Future<_i13.LoginResponse?>); + returnValue: _i7.Future<_i13.LoginResponse?>.value(), + returnValueForMissingStub: _i7.Future<_i13.LoginResponse?>.value(), + ) as _i7.Future<_i13.LoginResponse?>); @override - _i6.Future<_i15.User?> register(_i16.RegisterModel? registerModel) => + _i7.Future<_i15.User?> register(_i16.RegisterModel? registerModel) => (super.noSuchMethod( Invocation.method( #register, [registerModel], ), - returnValue: _i6.Future<_i15.User?>.value(), - returnValueForMissingStub: _i6.Future<_i15.User?>.value(), - ) as _i6.Future<_i15.User?>); + returnValue: _i7.Future<_i15.User?>.value(), + returnValueForMissingStub: _i7.Future<_i15.User?>.value(), + ) as _i7.Future<_i15.User?>); } /// A class which mocks [DishService]. @@ -913,22 +924,22 @@ class MockAuthenticationService extends _i1.Mock /// See the documentation for Mockito's code generation for more information. class MockDishService extends _i1.Mock implements _i17.DishService { @override - _i6.Future createDish(_i18.CreateDishInfo? info) => + _i7.Future createDish(_i18.CreateDishInfo? info) => (super.noSuchMethod( Invocation.method( #createDish, [info], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future<_i2.RecipesResponseModel> getAllDishes() => (super.noSuchMethod( + _i7.Future<_i2.RecipesResponseModel> getAllDishes() => (super.noSuchMethod( Invocation.method( #getAllDishes, [], ), - returnValue: _i6.Future<_i2.RecipesResponseModel>.value( + returnValue: _i7.Future<_i2.RecipesResponseModel>.value( _FakeRecipesResponseModel_0( this, Invocation.method( @@ -936,7 +947,7 @@ class MockDishService extends _i1.Mock implements _i17.DishService { [], ), )), - returnValueForMissingStub: _i6.Future<_i2.RecipesResponseModel>.value( + returnValueForMissingStub: _i7.Future<_i2.RecipesResponseModel>.value( _FakeRecipesResponseModel_0( this, Invocation.method( @@ -944,14 +955,14 @@ class MockDishService extends _i1.Mock implements _i17.DishService { [], ), )), - ) as _i6.Future<_i2.RecipesResponseModel>); + ) as _i7.Future<_i2.RecipesResponseModel>); @override - _i6.Future<_i2.RecipesResponseModel> getUserDishes() => (super.noSuchMethod( + _i7.Future<_i2.RecipesResponseModel> getUserDishes() => (super.noSuchMethod( Invocation.method( #getUserDishes, [], ), - returnValue: _i6.Future<_i2.RecipesResponseModel>.value( + returnValue: _i7.Future<_i2.RecipesResponseModel>.value( _FakeRecipesResponseModel_0( this, Invocation.method( @@ -959,7 +970,7 @@ class MockDishService extends _i1.Mock implements _i17.DishService { [], ), )), - returnValueForMissingStub: _i6.Future<_i2.RecipesResponseModel>.value( + returnValueForMissingStub: _i7.Future<_i2.RecipesResponseModel>.value( _FakeRecipesResponseModel_0( this, Invocation.method( @@ -967,7 +978,7 @@ class MockDishService extends _i1.Mock implements _i17.DishService { [], ), )), - ) as _i6.Future<_i2.RecipesResponseModel>); + ) as _i7.Future<_i2.RecipesResponseModel>); } /// A class which mocks [DatabaseService]. @@ -995,41 +1006,41 @@ class MockDatabaseService extends _i1.Mock implements _i19.DatabaseService { returnValueForMissingStub: null, ); @override - _i6.Future init() => (super.noSuchMethod( + _i7.Future init() => (super.noSuchMethod( Invocation.method( #init, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future clearUserData() => (super.noSuchMethod( + _i7.Future clearUserData() => (super.noSuchMethod( Invocation.method( #clearUserData, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future mergeUser(_i15.User? user) => (super.noSuchMethod( + _i7.Future mergeUser(_i15.User? user) => (super.noSuchMethod( Invocation.method( #mergeUser, [user], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future<_i15.User?> authenticatedUser() => (super.noSuchMethod( + _i7.Future<_i15.User?> authenticatedUser() => (super.noSuchMethod( Invocation.method( #authenticatedUser, [], ), - returnValue: _i6.Future<_i15.User?>.value(), - returnValueForMissingStub: _i6.Future<_i15.User?>.value(), - ) as _i6.Future<_i15.User?>); + returnValue: _i7.Future<_i15.User?>.value(), + returnValueForMissingStub: _i7.Future<_i15.User?>.value(), + ) as _i7.Future<_i15.User?>); } /// A class which mocks [UserService]. @@ -1043,23 +1054,23 @@ class MockUserService extends _i1.Mock implements _i20.UserService { returnValueForMissingStub: 0, ) as int); @override - _i6.Future delete() => (super.noSuchMethod( + _i7.Future delete() => (super.noSuchMethod( Invocation.method( #delete, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future saveUser(_i15.User? user) => (super.noSuchMethod( + _i7.Future saveUser(_i15.User? user) => (super.noSuchMethod( Invocation.method( #saveUser, [user], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override void listenToReactiveValues(List? reactiveValues) => super.noSuchMethod( @@ -1099,4 +1110,31 @@ class MockUserService extends _i1.Mock implements _i20.UserService { /// /// See the documentation for Mockito's code generation for more information. class MockLocalizationService extends _i1.Mock - implements _i21.LocalizationService {} + implements _i21.LocalizationService { + @override + _i4.Locale get currentLocale => (super.noSuchMethod( + Invocation.getter(#currentLocale), + returnValue: _FakeLocale_2( + this, + Invocation.getter(#currentLocale), + ), + returnValueForMissingStub: _FakeLocale_2( + this, + Invocation.getter(#currentLocale), + ), + ) as _i4.Locale); + @override + _i22.Languages get selectedLocale => (super.noSuchMethod( + Invocation.getter(#selectedLocale), + returnValue: _i22.Languages.english, + returnValueForMissingStub: _i22.Languages.english, + ) as _i22.Languages); + @override + void assignLocale(_i22.Languages? value) => super.noSuchMethod( + Invocation.method( + #assignLocale, + [value], + ), + returnValueForMissingStub: null, + ); +}