Skip to content

Repository files navigation

Hi — Base Flutter + FlutterWind (Arcaelas)

Plantilla base para apps Flutter: estructura, providers, API y widgets listos para copiar y empezar un proyecto nuevo. Package com.arcaelas.hi. La app compila y corre tal cual con credenciales placeholder: arranca en modo fallback (sin login, Firebase no configurado).

Stack

  • FlutterWind para estilos: .className('...') con clases Tailwind. Evitar TextStyle/Container(color:) manual cuando exista equivalente.
  • Providers estáticos (sin riverpod/bloc): clases con init/get/set/sub.
  • Router propio (lib/widget/route/): árbol declarativo + stack Offstage; sin go_router.
  • API con backend simulado (lib/lib/http/): interceptores por pathname; las rutas registradas con API.use.* resuelven local y el resto viaja al base_url.

Estructura

lib/
├── main.dart            # init de providers por nivel + gating (login/shell) + tema
├── assets/              # icons/ (logo.svg) · sounds/
├── lib/                 # PROVIDERS globales
├── widget/              # WIDGETS globales reutilizables
└── view/                # VISTAS content-only

Regla transversal (recursiva en cualquier nivel): cada módulo/widget/view es una carpeta con main.dart. Los imports van solo hacia arriba (propio lib/, padre, raíz). Nunca entre hermanos. Sin carpetas models/utils/helpers/constants/.

Providers por nivel de dependencia

  • L0 (sin deps): preferences, events, network, http.
  • L1 (→ Preferences): theme, lang, notification.
  • L2 (→ Preferences/Lang): sound (TTS), microphone (STT).
  • Features: location (GPS), deeplink (App Links), app_lock (biometría).
  • Dominios del API (lib/lib/http/lib/): example (/ping), auth (/v1/*).

El orden de init() en main.dart respeta estas dependencias.

Vistas y widgets

Vistas: home (hola mundo + demo /ping) · settings (showcase de providers) · about · login (gating previo al shell). Widgets globales: route, bottom_nav, session, splash, lock_gate, toast_overlay, alert, input, primary_button, pressable, app_image.

Puesta en marcha

flutter pub get
flutter run --hot
flutter analyze

Renombrar para un proyecto nuevo

El package es com.arcaelas.hi. Para un proyecto nuevo:

  • pubspec.yamlname: y description:.
  • android/app/build.gradle.ktsapplicationId y namespace.
  • android/app/src/main/kotlin/com/arcaelas/hi/MainActivity.kt → mover a tu paquete.
  • ios/Runner.xcodeprojPRODUCT_BUNDLE_IDENTIFIER.
  • Imports Dart package:hi/...package:<name>/....

Firebase (login con Google)

Sin esto la app corre en fallback: entra directo al shell, sin login.

dart pub global activate flutterfire_cli
flutterfire configure

Manual: reemplaza android/app/google-services.json (hay un dummy válido) y agrega ios/Runner/GoogleService-Info.plist. Server client id de Google si tu plataforma lo requiere:

flutter run --dart-define GOOGLE_SERVER_CLIENT_ID=xxxx.apps.googleusercontent.com

Backend del API

flutter run --dart-define API_URL=https://tu-api.com

El default es https://api.example.com; sin backend real, el simulado responde las rutas registradas.

Permisos ya declarados

  • Android: INTERNET, ACCESS_NETWORK_STATE, ubicación (fine/coarse), RECORD_AUDIO, POST_NOTIFICATIONS.
  • iOS: ubicación, micrófono, reconocimiento de voz.

Nota de seguridad

No commitees keys reales. Usa --dart-define, gradle.properties (gitignored) y los archivos de Firebase fuera del control de versiones para credenciales de producción.

About

Base Flutter template with FlutterWind — the mandatory scaffold for Arcaelas mobile apps.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages