Una aplicación Flutter moderna con Firebase Authentication implementada usando Clean Architecture y BLoC como gestor de estado.
La aplicación sigue los principios de Clean Architecture con las siguientes capas:
- Domain Layer: Entidades, repositorios abstractos y casos de uso
- Data Layer: Implementaciones de repositorios, modelos y fuentes de datos
- Presentation Layer: BLoC, páginas y widgets
firebase_core: ^2.24.2- Inicialización de Firebasefirebase_auth: ^4.15.3- Autenticación con Firebaseflutter_bloc: ^8.1.3- Gestión de estado con BLoCequatable: ^2.0.5- Comparación de objetosget_it: ^7.6.4- Inyección de dependencias
- Ve a Firebase Console
- Crea un nuevo proyecto o selecciona uno existente
- Habilita Authentication con Email/Password
-
En Firebase Console, ve a Project Settings > General
-
Descarga el archivo
google-services.json -
Colócalo en
android/app/google-services.json -
Actualiza
android/build.gradle:
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
}
}- Actualiza
android/app/build.gradle:
apply plugin: 'com.google.gms.google-services'- En Firebase Console, descarga
GoogleService-Info.plist - Colócalo en
ios/Runner/GoogleService-Info.plist - Agrega el archivo a Xcode (arrastra y suelta en Runner)
- En Firebase Console, ve a Project Settings > General
- En la sección "Your apps", agrega una app web
- Copia la configuración y agrégalo a
web/index.html:
<script type="module">
import { initializeApp } from 'https://www.gstatic.com/firebasejs/10.7.1/firebase-app.js'
import { getAuth } from 'https://www.gstatic.com/firebasejs/10.7.1/firebase-auth.js'
const firebaseConfig = {
// Tu configuración aquí
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
</script>- ✅ Registro con email y contraseña
- ✅ Inicio de sesión con email y contraseña
- ✅ Cerrar sesión
- ✅ Verificación de estado de autenticación
- ✅ Manejo de errores en español
- ✅ Diseño moderno con Material 3
- ✅ Efectos de glassmorphism
- ✅ Gradientes y transparencias
- ✅ Responsive design
- ✅ Loading states
- ✅ Validación de formularios
- ✅ Clean Architecture completa
- ✅ Separación de responsabilidades
- ✅ Inyección de dependencias
- ✅ BLoC para gestión de estado
- ✅ Manejo de errores centralizado
lib/
├── core/
│ ├── di/
│ │ └── injection_container.dart
│ ├── errors/
│ └── utils/
├── features/
│ └── auth/
│ ├── data/
│ │ ├── datasources/
│ │ │ └── auth_remote_datasource.dart
│ │ ├── models/
│ │ │ └── user_model.dart
│ │ └── repositories/
│ │ └── auth_repository_impl.dart
│ ├── domain/
│ │ ├── entities/
│ │ │ ├── auth_credentials.dart
│ │ │ └── user_entity.dart
│ │ ├── repositories/
│ │ │ └── auth_repository.dart
│ │ └── usecases/
│ │ ├── get_current_user_usecase.dart
│ │ ├── sign_in_usecase.dart
│ │ ├── sign_out_usecase.dart
│ │ └── sign_up_usecase.dart
│ └── presentation/
│ ├── bloc/
│ │ ├── auth_bloc.dart
│ │ ├── auth_event.dart
│ │ └── auth_state.dart
│ ├── pages/
│ │ ├── home_page.dart
│ │ ├── login_page.dart
│ │ └── register_page.dart
│ └── widgets/
│ └── glassmorphism_container.dart
└── main.dart
- Instala las dependencias:
flutter pub get-
Configura Firebase (ver sección de configuración)
-
Ejecuta la aplicación:
flutter run- ✅
signIn(String email, String password) - ✅
signUp(String email, String password) - ✅
signOut() - ✅
currentUser()
- ✅ Stream de cambios de estado de autenticación
- ✅ Manejo de errores en español
- ✅ Validación de formularios
- ✅ UI moderna con glassmorphism
- ✅ Navegación automática basada en estado de auth
- Agregar más métodos de autenticación (Google, Apple, etc.)
- Implementar recuperación de contraseña
- Agregar verificación de email
- Implementar persistencia local
- Agregar tests unitarios y de widgets
- Implementar tema oscuro
- Agregar animaciones de transición
- La aplicación usa las últimas versiones de Firebase y Flutter
- Implementa Clean Architecture completa con separación clara de capas
- Usa BLoC para gestión de estado de forma reactiva
- Incluye efectos visuales modernos con glassmorphism
- Manejo de errores en español para mejor UX