Skip to content

Commit dff57df

Browse files
authored
Feature/add debug mode (#114)
* add dev banner in debug mode for development * improve debug mode * fix suggestions * improve strings * upgrade spanish trasnlation
1 parent 6abcc0c commit dff57df

File tree

19 files changed

+338
-84
lines changed

19 files changed

+338
-84
lines changed

app/lib/main/app.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
import 'package:flutter/material.dart';
2-
import 'package:domain/bloc/app/app_cubit.dart';
3-
import 'package:domain/bloc/app/app_state.dart';
4-
import 'package:domain/bloc/auth/auth_cubit.dart';
51
import 'package:app/presentation/navigation/routers.dart';
62
import 'package:app/presentation/resources/locale/generated/l10n.dart';
73
import 'package:app/presentation/themes/app_themes.dart';
84
import 'package:app/presentation/utils/lang_extensions.dart';
5+
import 'package:app_links/app_links.dart';
6+
import 'package:domain/bloc/app/app_cubit.dart';
7+
import 'package:domain/bloc/app/app_state.dart';
8+
import 'package:domain/bloc/auth/auth_cubit.dart';
9+
import 'package:flutter/foundation.dart' show kIsWeb;
10+
import 'package:flutter/material.dart';
911
import 'package:flutter_bloc/flutter_bloc.dart';
1012
import 'package:flutter_localizations/flutter_localizations.dart';
11-
import 'package:flutter/foundation.dart' show kIsWeb;
12-
import 'package:app_links/app_links.dart';
1313
import 'package:go_router/go_router.dart';
14+
1415
import 'init.dart';
1516

1617
class App extends StatefulWidget {
@@ -74,6 +75,7 @@ class _AppState extends State<App> {
7475
: BlocBuilder<AppCubit, AppState>(
7576
builder: (context, state) {
7677
return MaterialApp.router(
78+
debugShowCheckedModeBanner: false,
7779
theme: AppThemes.getAppTheme(state.themeType).data,
7880
locale: LangExtensions.langLocale[state.appLang],
7981
supportedLocales: LangExtensions.supportedLang,

app/lib/presentation/navigation/routers.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import 'package:app/main/init.dart';
2+
import 'package:app/presentation/ui/custom/debug_banner.dart';
23
import 'package:app/presentation/ui/pages/main/home/home_page.dart';
34
import 'package:app/presentation/ui/pages/auth/login/login_page.dart';
45
import 'package:app/presentation/ui/pages/auth/sign_up/sign_up_page.dart';
56
import 'package:app/presentation/ui/pages/splash/splash_page.dart';
67
import 'package:common/core/resource.dart';
78
import 'package:domain/bloc/auth/auth_cubit.dart';
89
import 'package:domain/bloc/auth/auth_state.dart';
10+
import 'package:flutter/foundation.dart';
911
import 'package:flutter/widgets.dart';
1012
import 'package:flutter_bloc/flutter_bloc.dart';
1113
import 'package:go_router/go_router.dart';
@@ -36,12 +38,15 @@ extension ContextOnRouter on BuildContext {
3638
GoRouter get router => GoRouter.of(this);
3739
}
3840

41+
final rootNavigatorKey = GlobalKey<NavigatorState>();
42+
3943
class Routers {
4044
static GoRouter appRouter(
4145
BuildContext context, {
4246
String? initialLocation,
4347
}) =>
4448
GoRouter(
49+
navigatorKey: rootNavigatorKey,
4550
initialLocation: initialLocation ??
4651
(getIt<AuthCubit>().isLoggedIn()
4752
? Routes.app.path
@@ -85,7 +90,8 @@ class Routers {
8590
},
8691
routes: [
8792
ShellRoute(
88-
builder: (context, state, child) => child,
93+
builder: (context, state, child) =>
94+
kDebugMode ? DebugBanner(child: child) : child,
8995
routes: [
9096
GoRoute(
9197
name: Routes.auth.name,
@@ -108,7 +114,8 @@ class Routers {
108114
],
109115
),
110116
ShellRoute(
111-
builder: (context, state, child) => child,
117+
builder: (context, state, child) =>
118+
kDebugMode ? DebugBanner(child: child) : child,
112119
routes: [
113120
GoRoute(
114121
name: Routes.app.name,

app/lib/presentation/resources/locale/generated/intl/messages_en.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ class MessageLookup extends MessageLookupByLibrary {
3232
),
3333
"ctaLogin": MessageLookupByLibrary.simpleMessage("Login"),
3434
"ctaSignUp": MessageLookupByLibrary.simpleMessage("Sign Up"),
35+
"debugModeCancel": MessageLookupByLibrary.simpleMessage("Cancel"),
36+
"debugModeConfirm": MessageLookupByLibrary.simpleMessage("Confirm"),
37+
"debugModeLabel": MessageLookupByLibrary.simpleMessage("DEV"),
38+
"debugModeResetApp": MessageLookupByLibrary.simpleMessage("RESET"),
39+
"debugModeResetAppMessage": MessageLookupByLibrary.simpleMessage(
40+
"Are you sure you want to reset the app?",
41+
),
42+
"debugModeResetAppTitle": MessageLookupByLibrary.simpleMessage("Reset App"),
3543
"errorEmailInvalid": MessageLookupByLibrary.simpleMessage(
3644
"Please enter a valid email address.",
3745
),

app/lib/presentation/resources/locale/generated/intl/messages_es.dart

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,25 @@ class MessageLookup extends MessageLookupByLibrary {
2525
"appName": MessageLookupByLibrary.simpleMessage("Flutter Target"),
2626
"cookiesAcceptCTA": MessageLookupByLibrary.simpleMessage("Aceptar"),
2727
"cookiesBody": MessageLookupByLibrary.simpleMessage(
28-
"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.",
28+
"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.",
2929
),
3030
"cookiesTitle": MessageLookupByLibrary.simpleMessage(
3131
"Este sitio web utiliza cookies",
3232
),
3333
"ctaLogin": MessageLookupByLibrary.simpleMessage("Iniciar sesión"),
34+
"ctaSignUp": MessageLookupByLibrary.simpleMessage("Registrarse"),
35+
"debugModeCancel": MessageLookupByLibrary.simpleMessage("Cancelar"),
36+
"debugModeConfirm": MessageLookupByLibrary.simpleMessage("Confirmar"),
37+
"debugModeLabel": MessageLookupByLibrary.simpleMessage("DEV"),
38+
"debugModeResetApp": MessageLookupByLibrary.simpleMessage("RESET"),
39+
"debugModeResetAppMessage": MessageLookupByLibrary.simpleMessage(
40+
"¿Estás seguro de que deseas resetear la aplicación?",
41+
),
42+
"debugModeResetAppTitle": MessageLookupByLibrary.simpleMessage(
43+
"Resetear App",
44+
),
3445
"errorEmailInvalid": MessageLookupByLibrary.simpleMessage(
35-
"Por favor ingresa una dirección de correo válida.",
46+
"Por favor ingresa un correo electrónico válido.",
3647
),
3748
"errorEmailRequired": MessageLookupByLibrary.simpleMessage(
3849
"El correo electrónico es obligatorio.",
@@ -43,29 +54,42 @@ class MessageLookup extends MessageLookupByLibrary {
4354
"errorPasswordWeak": MessageLookupByLibrary.simpleMessage(
4455
"La contraseña es demasiado débil.",
4556
),
57+
"errorPasswordsDoNotMatch": MessageLookupByLibrary.simpleMessage(
58+
"Las contraseñas no coinciden.",
59+
),
60+
"hintTermsAndConditions": MessageLookupByLibrary.simpleMessage(
61+
"Esto debería abrir la URL de términos y condiciones.",
62+
),
4663
"labelAgreeToTerms": MessageLookupByLibrary.simpleMessage(
4764
"Acepto los Términos y Condiciones",
4865
),
66+
"labelConfirmPassword": MessageLookupByLibrary.simpleMessage(
67+
"Confirmar contraseña",
68+
),
4969
"labelEmail": MessageLookupByLibrary.simpleMessage("Correo electrónico"),
5070
"labelPassword": MessageLookupByLibrary.simpleMessage("Contraseña"),
5171
"loginErrorInvalidCredentials": MessageLookupByLibrary.simpleMessage(
52-
"Correo o contraseña inválidos.",
72+
"Correo electrónico o contraseña incorrectos.",
5373
),
5474
"noConnection": MessageLookupByLibrary.simpleMessage("Sin conexión"),
5575
"passwordInstructions": MessageLookupByLibrary.simpleMessage(
5676
"Mínimo 8 caracteres: 1 mayúscula, 1 minúscula, 1 número y 1 carácter especial.",
5777
),
5878
"pleaseTryAgainLaterWeArenworkingToFixTheIssue":
5979
MessageLookupByLibrary.simpleMessage(
60-
"Por favor, inténtalo más tarde,\nestamos trabajando para resolver el problema.",
80+
"Por favor intenta nuevamente más tarde,\nestamos trabajando para solucionar el problema.",
6181
),
6282
"retry": MessageLookupByLibrary.simpleMessage("Reintentar"),
6383
"sorryWeDidntFindAnyProduct": MessageLookupByLibrary.simpleMessage(
64-
"Lo sentimos, no hemos encontrado ningún producto",
84+
"Lo sentimos, no encontramos ningún producto",
6585
),
6686
"titleLogin": MessageLookupByLibrary.simpleMessage("Iniciar sesión"),
6787
"titleLoginSubtitle": MessageLookupByLibrary.simpleMessage(
68-
"Usa tu correo y contraseña para iniciar sesión en tu cuenta.",
88+
"Usa tu correo electrónico y contraseña para iniciar sesión en tu cuenta.",
89+
),
90+
"titleSignUp": MessageLookupByLibrary.simpleMessage("Registrarse"),
91+
"titleSignUpSubtitle": MessageLookupByLibrary.simpleMessage(
92+
"Crea una cuenta usando tu correo electrónico y contraseña.",
6993
),
7094
};
7195
}

app/lib/presentation/resources/locale/generated/l10n.dart

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/presentation/resources/locale/intl_en.arb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,11 @@
2424
"errorEmailInvalid": "Please enter a valid email address.",
2525
"errorPasswordWeak": "Password is too weak.",
2626
"loginErrorInvalidCredentials": "Invalid email or password.",
27-
"hintTermsAndConditions": "This should open the terms and conditions URL."
27+
"hintTermsAndConditions": "This should open the terms and conditions URL.",
28+
"debugModeLabel": "DEV",
29+
"debugModeResetApp": "RESET",
30+
"debugModeResetAppTitle": "Reset App",
31+
"debugModeResetAppMessage": "Are you sure you want to reset the app?",
32+
"debugModeCancel": "Cancel",
33+
"debugModeConfirm": "Confirm"
2834
}

app/lib/presentation/resources/locale/intl_es.arb

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,33 @@
22
"appName": "Flutter Target",
33
"cookiesTitle": "Este sitio web utiliza cookies",
44
"cookiesAcceptCTA": "Aceptar",
5-
"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.",
5+
"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.",
66
"noConnection": "Sin conexión",
77
"retry": "Reintentar",
8-
"pleaseTryAgainLaterWeArenworkingToFixTheIssue": "Por favor, inténtalo más tarde,\nestamos trabajando para resolver el problema.",
9-
"sorryWeDidntFindAnyProduct": "Lo sentimos, no hemos encontrado ningún producto",
8+
"pleaseTryAgainLaterWeArenworkingToFixTheIssue": "Por favor intenta nuevamente más tarde,\nestamos trabajando para solucionar el problema.",
9+
"sorryWeDidntFindAnyProduct": "Lo sentimos, no encontramos ningún producto",
1010
"ctaLogin": "Iniciar sesión",
11+
"ctaSignUp": "Registrarse",
1112
"labelEmail": "Correo electrónico",
1213
"labelPassword": "Contraseña",
14+
"labelConfirmPassword": "Confirmar contraseña",
15+
"errorPasswordsDoNotMatch": "Las contraseñas no coinciden.",
1316
"passwordInstructions": "Mínimo 8 caracteres: 1 mayúscula, 1 minúscula, 1 número y 1 carácter especial.",
1417
"labelAgreeToTerms": "Acepto los Términos y Condiciones",
1518
"errorEmailRequired": "El correo electrónico es obligatorio.",
1619
"errorPasswordRequired": "La contraseña es obligatoria.",
1720
"titleLogin": "Iniciar sesión",
18-
"titleLoginSubtitle": "Usa tu correo y contraseña para iniciar sesión en tu cuenta.",
19-
"errorEmailInvalid": "Por favor ingresa una dirección de correo válida.",
21+
"titleSignUp": "Registrarse",
22+
"titleLoginSubtitle": "Usa tu correo electrónico y contraseña para iniciar sesión en tu cuenta.",
23+
"titleSignUpSubtitle": "Crea una cuenta usando tu correo electrónico y contraseña.",
24+
"errorEmailInvalid": "Por favor ingresa un correo electrónico válido.",
2025
"errorPasswordWeak": "La contraseña es demasiado débil.",
21-
"loginErrorInvalidCredentials": "Correo o contraseña inválidos."
22-
}
26+
"loginErrorInvalidCredentials": "Correo electrónico o contraseña incorrectos.",
27+
"hintTermsAndConditions": "Esto debería abrir la URL de términos y condiciones.",
28+
"debugModeLabel": "DEV",
29+
"debugModeResetApp": "RESET",
30+
"debugModeResetAppTitle": "Resetear App",
31+
"debugModeResetAppMessage": "¿Estás seguro de que deseas resetear la aplicación?",
32+
"debugModeCancel": "Cancelar",
33+
"debugModeConfirm": "Confirmar"
34+
}

app/lib/presentation/themes/local_theme.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,15 @@ abstract class LocalTheme {
8585
),
8686
elevation: 10,
8787
),
88+
dialogTheme: DialogThemeData(
89+
shape: RoundedRectangleBorder(
90+
borderRadius: BorderRadius.all(
91+
Radius.circular(themeData.borderRadius),
92+
),
93+
),
94+
titleTextStyle: titleM.copyWith(color: colors.onSurface),
95+
contentTextStyle: subtitleM.copyWith(color: colors.onSurface),
96+
),
8897
);
8998

9099
final primaryFont = 'Roboto Regular';

app/lib/presentation/ui/custom/app_theme_switch.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ class AppThemeSwitch extends StatelessWidget {
1414

1515
return Switch(
1616
value: theme == ThemeType.dark,
17-
activeTrackColor: Colors.grey,
17+
thumbIcon: const WidgetStatePropertyAll(Icon(Icons.brightness_6)),
1818
onChanged: (value) {
19-
context.read<AppCubit>().updateTheme(value ? ThemeType.dark : ThemeType.light);
19+
context
20+
.read<AppCubit>()
21+
.updateTheme(value ? ThemeType.dark : ThemeType.light);
2022
},
2123
);
2224
}

0 commit comments

Comments
 (0)