feat: add multi-environment support (development, staging, production)

- Replace dotenv with compile-time dart-define-from-file config per flavor
  - Add Android product flavors with applicationIdSuffix and per-flavor AndroidManifest
  - Add iOS build configurations, schemes, per-flavor plists and entitlements
  - Configure ProGuard rules for R8 compatibility with Entrust/Antelop SDK
  - Restructure assets into shared/ and per-flavor directories
  - Generate per-flavor launcher icons for Android and iOS
  - Refactor app initialization into initApp() with per-flavor entry points
  - Update asset paths across auth, home, profile, splash modules and sf_shared
This commit is contained in:
2026-03-01 00:12:47 +01:00
parent 213279de18
commit ef0abc2f85
226 changed files with 1751 additions and 252 deletions

View File

@@ -1 +1 @@
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_treezor_entrust_sdk_bridge","path":"/Users/juliandalcalaf/Desktop/sf-app-platform/packages/flutter_treezor_entrust_sdk_bridge/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_foundation-2.5.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"flutter_treezor_entrust_sdk_bridge","path":"/Users/juliandalcalaf/Desktop/sf-app-platform/packages/flutter_treezor_entrust_sdk_bridge/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_android-2.2.22/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.20/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"path_provider_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_foundation-2.5.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"path_provider_linux","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false}],"windows":[{"name":"path_provider_windows","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false}],"web":[{"name":"shared_preferences_web","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"flutter_treezor_entrust_sdk_bridge","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2026-02-15 14:35:41.688638","version":"3.35.7","swift_package_manager_enabled":{"ios":false,"macos":false}}
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_treezor_entrust_sdk_bridge","path":"/Users/juliandalcalaf/Desktop/apps/sf-app-platform/packages/flutter_treezor_entrust_sdk_bridge/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_foundation-2.5.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"flutter_treezor_entrust_sdk_bridge","path":"/Users/juliandalcalaf/Desktop/apps/sf-app-platform/packages/flutter_treezor_entrust_sdk_bridge/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_android-2.2.22/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.20/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"path_provider_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_foundation-2.5.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"path_provider_linux","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false}],"windows":[{"name":"path_provider_windows","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false}],"web":[{"name":"shared_preferences_web","path":"/Users/juliandalcalaf/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"flutter_treezor_entrust_sdk_bridge","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]}],"date_created":"2026-02-28 20:18:36.684471","version":"3.35.7","swift_package_manager_enabled":{"ios":false,"macos":false}}

View File

@@ -29,7 +29,7 @@ class LinkInfoStepScreen extends ConsumerWidget {
const SizedBox(height: 25),
SvgPicture.asset("assets/images/ui/formulario.svg"),
SvgPicture.asset("assets/shared/images/formulario.svg"),
const SizedBox(height: 40),

View File

@@ -135,7 +135,7 @@ class ScanStrapAndWatchStepScreen extends ConsumerWidget {
),
child: Center(
child: SvgPicture.asset(
"assets/images/ui/qr.svg",
"assets/shared/images/qr.svg",
width: 90,
height: 90,
fit: BoxFit.contain,

View File

@@ -14,7 +14,7 @@ class LoadingScreen extends StatelessWidget{
spacing: 50,
children: [
Spacer(flex: 8),
SvgPicture.asset("assets/images/ui/logo_sf.svg"),
SvgPicture.asset("assets/shared/images/logo_sf.svg"),
AppLoadingIndicator(),
Spacer(flex: 10)
],

View File

@@ -14,17 +14,17 @@ class OnboardingPage {
const List<OnboardingPage> onboardingPages = <OnboardingPage>[
OnboardingPage(
image: 'assets/images/ui/bienvenida_paso1.svg',
image: 'assets/shared/images/bienvenida_paso1.svg',
title: I18n.onboardingTitle1,
subtitle: I18n.onboardingSubtitle1,
),
OnboardingPage(
image: 'assets/images/ui/bienvenida_paso2.svg',
image: 'assets/shared/images/bienvenida_paso2.svg',
title: I18n.onboardingTitle2,
subtitle: I18n.onboardingSubtitle2,
),
OnboardingPage(
image: 'assets/images/ui/bienvenida_paso3.svg',
image: 'assets/shared/images/bienvenida_paso3.svg',
title: I18n.onboardingTitle3,
subtitle: I18n.onboardingSubtitle3,
),

View File

@@ -134,7 +134,7 @@ class SavingsBlockState extends ConsumerState<SavingsBlock> {
children: [
Align(
alignment: Alignment.topRight,
child: SvgPicture.asset("assets/images/ui/ahorros.svg"),
child: SvgPicture.asset("assets/shared/images/ahorros.svg"),
),
Column(
spacing: 24,
@@ -648,7 +648,7 @@ class TasksBlockState extends ConsumerState<TasksBlock> {
children: [
Align(
alignment: Alignment.topRight,
child: SvgPicture.asset("assets/images/ui/tareas.svg"),
child: SvgPicture.asset("assets/shared/images/tareas.svg"),
),
Column(
spacing: 24,

View File

@@ -39,7 +39,7 @@ class ChildWalletLineChart extends ConsumerWidget{
SizedBox(
height: 50,
width: 50,
child: SvgPicture.asset("assets/images/ui/face.svg"),
child: SvgPicture.asset("assets/shared/images/face.svg"),
),
Column(children: [
Text(

View File

@@ -208,13 +208,13 @@ class PaymentMethodsScreen extends ConsumerWidget {
switch (brand.toLowerCase()) {
case 'visa':
return SvgPicture.asset(
'assets/images/ui/visa.svg',
'assets/shared/images/visa.svg',
width: 28,
height: 12,
);
case 'mastercard':
return SvgPicture.asset(
'assets/images/ui/mastercard.svg',
'assets/shared/images/mastercard.svg',
width: 40,
height: 28,
);

View File

@@ -48,7 +48,7 @@ class _SplashScreenState extends State<SplashScreen> {
@override
Widget build(BuildContext context) {
return AnimatedSplashScreen(
splash: Image.asset('assets/images/logos/splash.gif'),
splash: Image.asset('assets/shared/images/splash.gif'),
splashIconSize: 900.0,
nextScreen: const SizedBox.shrink(),
disableNavigation: true,