Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions app/lib/main/app.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import 'package:flutter/material.dart';
import 'package:domain/bloc/app/app_cubit.dart';
import 'package:domain/bloc/app/app_state.dart';
import 'package:domain/bloc/auth/auth_cubit.dart';
import 'package:app/presentation/navigation/routers.dart';
import 'package:app/presentation/resources/locale/generated/l10n.dart';
import 'package:app/presentation/themes/app_themes.dart';
import 'package:app/presentation/utils/lang_extensions.dart';
import 'package:app_links/app_links.dart';
import 'package:domain/bloc/app/app_cubit.dart';
import 'package:domain/bloc/app/app_state.dart';
import 'package:domain/bloc/auth/auth_cubit.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:app_links/app_links.dart';
import 'package:go_router/go_router.dart';

import 'init.dart';

class App extends StatefulWidget {
Expand Down Expand Up @@ -74,6 +75,7 @@ class _AppState extends State<App> {
: BlocBuilder<AppCubit, AppState>(
builder: (context, state) {
return MaterialApp.router(
debugShowCheckedModeBanner: false,
theme: AppThemes.getAppTheme(state.themeType).data,
locale: LangExtensions.langLocale[state.appLang],
supportedLocales: LangExtensions.supportedLang,
Expand Down
11 changes: 9 additions & 2 deletions app/lib/presentation/navigation/routers.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import 'package:app/main/init.dart';
import 'package:app/presentation/ui/custom/debug_banner.dart';
import 'package:app/presentation/ui/pages/main/home/home_page.dart';
import 'package:app/presentation/ui/pages/auth/login/login_page.dart';
import 'package:app/presentation/ui/pages/auth/sign_up/sign_up_page.dart';
import 'package:app/presentation/ui/pages/splash/splash_page.dart';
import 'package:common/core/resource.dart';
import 'package:domain/bloc/auth/auth_cubit.dart';
import 'package:domain/bloc/auth/auth_state.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
Expand Down Expand Up @@ -36,12 +38,15 @@ extension ContextOnRouter on BuildContext {
GoRouter get router => GoRouter.of(this);
}

final rootNavigatorKey = GlobalKey<NavigatorState>();

class Routers {
static GoRouter appRouter(
BuildContext context, {
String? initialLocation,
}) =>
GoRouter(
navigatorKey: rootNavigatorKey,
initialLocation: initialLocation ??
(getIt<AuthCubit>().isLoggedIn()
? Routes.app.path
Expand Down Expand Up @@ -85,7 +90,8 @@ class Routers {
},
routes: [
ShellRoute(
builder: (context, state, child) => child,
builder: (context, state, child) =>
kDebugMode ? DebugBanner(child: child) : child,
routes: [
GoRoute(
name: Routes.auth.name,
Expand All @@ -108,7 +114,8 @@ class Routers {
],
),
ShellRoute(
builder: (context, state, child) => child,
builder: (context, state, child) =>
kDebugMode ? DebugBanner(child: child) : child,
routes: [
GoRoute(
name: Routes.app.name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ class MessageLookup extends MessageLookupByLibrary {
),
"ctaLogin": MessageLookupByLibrary.simpleMessage("Login"),
"ctaSignUp": MessageLookupByLibrary.simpleMessage("Sign Up"),
"debugModeCancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"debugModeConfirm": MessageLookupByLibrary.simpleMessage("Confirm"),
"debugModeLabel": MessageLookupByLibrary.simpleMessage("DEV"),
"debugModeResetApp": MessageLookupByLibrary.simpleMessage("RESET"),
"debugModeResetAppMessage": MessageLookupByLibrary.simpleMessage(
"Are you sure you want to reset the app?",
),
"debugModeResetAppTitle": MessageLookupByLibrary.simpleMessage("Reset App"),
"errorEmailInvalid": MessageLookupByLibrary.simpleMessage(
"Please enter a valid email address.",
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,25 @@ class MessageLookup extends MessageLookupByLibrary {
"appName": MessageLookupByLibrary.simpleMessage("Flutter Target"),
"cookiesAcceptCTA": MessageLookupByLibrary.simpleMessage("Aceptar"),
"cookiesBody": MessageLookupByLibrary.simpleMessage(
"Usamos cookies para personalizar el contenido y los anuncios, ofrecer funciones de redes sociales y analizar nuestro tráfico. También compartimos información sobre el uso de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis, quienes pueden combinarla con otra información que les hayas proporcionado o que hayan recopilado a partir del uso de sus servicios.",
"Usamos cookies para personalizar el contenido y los anuncios, proporcionar funciones de redes sociales y analizar nuestro tráfico. También compartimos información sobre el uso que haces de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis, quienes pueden combinarla con otra información que les hayas proporcionado o que hayan recopilado a partir del uso que haces de sus servicios.",
),
"cookiesTitle": MessageLookupByLibrary.simpleMessage(
"Este sitio web utiliza cookies",
),
"ctaLogin": MessageLookupByLibrary.simpleMessage("Iniciar sesión"),
"ctaSignUp": MessageLookupByLibrary.simpleMessage("Registrarse"),
"debugModeCancel": MessageLookupByLibrary.simpleMessage("Cancelar"),
"debugModeConfirm": MessageLookupByLibrary.simpleMessage("Confirmar"),
"debugModeLabel": MessageLookupByLibrary.simpleMessage("DEV"),
"debugModeResetApp": MessageLookupByLibrary.simpleMessage("RESET"),
"debugModeResetAppMessage": MessageLookupByLibrary.simpleMessage(
"¿Estás seguro de que deseas resetear la aplicación?",
),
"debugModeResetAppTitle": MessageLookupByLibrary.simpleMessage(
"Resetear App",
),
"errorEmailInvalid": MessageLookupByLibrary.simpleMessage(
"Por favor ingresa una dirección de correo válida.",
"Por favor ingresa un correo electrónico válido.",
),
"errorEmailRequired": MessageLookupByLibrary.simpleMessage(
"El correo electrónico es obligatorio.",
Expand All @@ -43,29 +54,42 @@ class MessageLookup extends MessageLookupByLibrary {
"errorPasswordWeak": MessageLookupByLibrary.simpleMessage(
"La contraseña es demasiado débil.",
),
"errorPasswordsDoNotMatch": MessageLookupByLibrary.simpleMessage(
"Las contraseñas no coinciden.",
),
"hintTermsAndConditions": MessageLookupByLibrary.simpleMessage(
"Esto debería abrir la URL de términos y condiciones.",
),
"labelAgreeToTerms": MessageLookupByLibrary.simpleMessage(
"Acepto los Términos y Condiciones",
),
"labelConfirmPassword": MessageLookupByLibrary.simpleMessage(
"Confirmar contraseña",
),
"labelEmail": MessageLookupByLibrary.simpleMessage("Correo electrónico"),
"labelPassword": MessageLookupByLibrary.simpleMessage("Contraseña"),
"loginErrorInvalidCredentials": MessageLookupByLibrary.simpleMessage(
"Correo o contraseña inválidos.",
"Correo electrónico o contraseña incorrectos.",
),
"noConnection": MessageLookupByLibrary.simpleMessage("Sin conexión"),
"passwordInstructions": MessageLookupByLibrary.simpleMessage(
"Mínimo 8 caracteres: 1 mayúscula, 1 minúscula, 1 número y 1 carácter especial.",
),
"pleaseTryAgainLaterWeArenworkingToFixTheIssue":
MessageLookupByLibrary.simpleMessage(
"Por favor, inténtalo más tarde,\nestamos trabajando para resolver el problema.",
"Por favor intenta nuevamente más tarde,\nestamos trabajando para solucionar el problema.",
),
"retry": MessageLookupByLibrary.simpleMessage("Reintentar"),
"sorryWeDidntFindAnyProduct": MessageLookupByLibrary.simpleMessage(
"Lo sentimos, no hemos encontrado ningún producto",
"Lo sentimos, no encontramos ningún producto",
),
"titleLogin": MessageLookupByLibrary.simpleMessage("Iniciar sesión"),
"titleLoginSubtitle": MessageLookupByLibrary.simpleMessage(
"Usa tu correo y contraseña para iniciar sesión en tu cuenta.",
"Usa tu correo electrónico y contraseña para iniciar sesión en tu cuenta.",
),
"titleSignUp": MessageLookupByLibrary.simpleMessage("Registrarse"),
"titleSignUpSubtitle": MessageLookupByLibrary.simpleMessage(
"Crea una cuenta usando tu correo electrónico y contraseña.",
),
};
}
45 changes: 45 additions & 0 deletions app/lib/presentation/resources/locale/generated/l10n.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion app/lib/presentation/resources/locale/intl_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,11 @@
"errorEmailInvalid": "Please enter a valid email address.",
"errorPasswordWeak": "Password is too weak.",
"loginErrorInvalidCredentials": "Invalid email or password.",
"hintTermsAndConditions": "This should open the terms and conditions URL."
"hintTermsAndConditions": "This should open the terms and conditions URL.",
"debugModeLabel": "DEV",
"debugModeResetApp": "RESET",
"debugModeResetAppTitle": "Reset App",
"debugModeResetAppMessage": "Are you sure you want to reset the app?",
"debugModeCancel": "Cancel",
"debugModeConfirm": "Confirm"
}
26 changes: 19 additions & 7 deletions app/lib/presentation/resources/locale/intl_es.arb
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,33 @@
"appName": "Flutter Target",
"cookiesTitle": "Este sitio web utiliza cookies",
"cookiesAcceptCTA": "Aceptar",
"cookiesBody": "Usamos cookies para personalizar el contenido y los anuncios, ofrecer funciones de redes sociales y analizar nuestro tráfico. También compartimos información sobre el uso de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis, quienes pueden combinarla con otra información que les hayas proporcionado o que hayan recopilado a partir del uso de sus servicios.",
"cookiesBody": "Usamos cookies para personalizar el contenido y los anuncios, proporcionar funciones de redes sociales y analizar nuestro tráfico. También compartimos información sobre el uso que haces de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis, quienes pueden combinarla con otra información que les hayas proporcionado o que hayan recopilado a partir del uso que haces de sus servicios.",
"noConnection": "Sin conexión",
"retry": "Reintentar",
"pleaseTryAgainLaterWeArenworkingToFixTheIssue": "Por favor, inténtalo más tarde,\nestamos trabajando para resolver el problema.",
"sorryWeDidntFindAnyProduct": "Lo sentimos, no hemos encontrado ningún producto",
"pleaseTryAgainLaterWeArenworkingToFixTheIssue": "Por favor intenta nuevamente más tarde,\nestamos trabajando para solucionar el problema.",
"sorryWeDidntFindAnyProduct": "Lo sentimos, no encontramos ningún producto",
"ctaLogin": "Iniciar sesión",
"ctaSignUp": "Registrarse",
"labelEmail": "Correo electrónico",
"labelPassword": "Contraseña",
"labelConfirmPassword": "Confirmar contraseña",
"errorPasswordsDoNotMatch": "Las contraseñas no coinciden.",
"passwordInstructions": "Mínimo 8 caracteres: 1 mayúscula, 1 minúscula, 1 número y 1 carácter especial.",
"labelAgreeToTerms": "Acepto los Términos y Condiciones",
"errorEmailRequired": "El correo electrónico es obligatorio.",
"errorPasswordRequired": "La contraseña es obligatoria.",
"titleLogin": "Iniciar sesión",
"titleLoginSubtitle": "Usa tu correo y contraseña para iniciar sesión en tu cuenta.",
"errorEmailInvalid": "Por favor ingresa una dirección de correo válida.",
"titleSignUp": "Registrarse",
"titleLoginSubtitle": "Usa tu correo electrónico y contraseña para iniciar sesión en tu cuenta.",
"titleSignUpSubtitle": "Crea una cuenta usando tu correo electrónico y contraseña.",
"errorEmailInvalid": "Por favor ingresa un correo electrónico válido.",
"errorPasswordWeak": "La contraseña es demasiado débil.",
"loginErrorInvalidCredentials": "Correo o contraseña inválidos."
}
"loginErrorInvalidCredentials": "Correo electrónico o contraseña incorrectos.",
"hintTermsAndConditions": "Esto debería abrir la URL de términos y condiciones.",
"debugModeLabel": "DEV",
"debugModeResetApp": "RESET",
"debugModeResetAppTitle": "Resetear App",
"debugModeResetAppMessage": "¿Estás seguro de que deseas resetear la aplicación?",
"debugModeCancel": "Cancelar",
"debugModeConfirm": "Confirmar"
}
9 changes: 9 additions & 0 deletions app/lib/presentation/themes/local_theme.dart
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,15 @@ abstract class LocalTheme {
),
elevation: 10,
),
dialogTheme: DialogThemeData(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(themeData.borderRadius),
),
),
titleTextStyle: titleM.copyWith(color: colors.onSurface),
contentTextStyle: subtitleM.copyWith(color: colors.onSurface),
),
);

final primaryFont = 'Roboto Regular';
Expand Down
6 changes: 4 additions & 2 deletions app/lib/presentation/ui/custom/app_theme_switch.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ class AppThemeSwitch extends StatelessWidget {

return Switch(
value: theme == ThemeType.dark,
activeTrackColor: Colors.grey,
thumbIcon: const WidgetStatePropertyAll(Icon(Icons.brightness_6)),
onChanged: (value) {
context.read<AppCubit>().updateTheme(value ? ThemeType.dark : ThemeType.light);
context
.read<AppCubit>()
.updateTheme(value ? ThemeType.dark : ThemeType.light);
},
);
}
Expand Down
Loading