App desarrollada durante el curso de Flutter de Fernando Herrera
-
Copiar el .env.template y renombrarlo a .env
-
Cambiar las variables de entorno (The MovieDB)
-
Cambios en la entidad, hay que ejecutar el comando:
flutter pub run build_runner build
-
Instalar las dependencias isar, isar_flutter_libs y path_provider:
flutter pub add isar isar_flutter_libs path_provider
-
Instalar las dependencias de desarrollo isar_generator y build_runner:
flutter pub add -d isar_generator build_runner
Todas las dependencias de Isar (isar, isar_flutter_libs e isar_generator) deben tener la misma versión.
-
Añadir la anotación @collection: Asocia la clase de la entidad con la clase de base de datos.
-
Añadir el identificador único para la base de datos:
Id? isarId;
-
Añadir el part con la nomenclatura nombreClase.g.dart. Varios ejemplos:
Movie > part "movie.g.dart"
Cliente > part "cliente.g.dart"
Factura > part "factura.g.dart"
Al añadirlo, se mostrará un error, es normal.
-
Ejecutar el comando generador de base de datos:
flutter pub run build_runner build
Estructura de ejemplo:
- domain
- datasources
- local_storage_datasource.dart
- repositories
- local_storage_repository.dart
- infrastructure
- datasources
- isar_datasource.dart (1)
- repositories
- local_storage_repository_impl.dart (2)
- presentation
- providers > storage
- local_storage_provider.dart (Provider genérico con los métodos definidos que une 1 con 2)
- favorite_movies_provider.dart (Provider para el listado de películas favoritas)
+ screens > movies
+ movie_screen.dart (Botón "Marcar favorito" > Buscar "Botón para añadir/quitar de favoritos")
+ views > movies
+ favorites_view.dart (Listado de películas favoritas)
Al ejecutar la aplicación desde Visual Studio Code e instanciar por primera vez la base de datos, en la ventana de "Consola de depuración" se nos mostrará un enlace para poder visualizar la base de datos.
Hay múltiples tipos de providers para diferentes casos de uso.
Con todos estos providers disponibles, a veces es difícil entender cuándo utilizar un tipo de provider sobre otro. Utiliza la tabla a continuación para elegir un provider que se adapte a lo que deseas proporcionar al árbol de widgets.
Tipo de Provider | Función de creación de Provider | Ejemplo de caso de uso |
---|---|---|
Provider | Retorna cualquier tipo | Una clase de servicio / propiedad calculada (lista filtrada) |
StateProvider | Retorna cualquier tipo | Una condición de filtro / objeto de estado simple |
FutureProvider | Retorna un Future de cualquier tipo | Un resultado de una llamada a una API |
StreamProvider | Retorna un Stream de cualquier tipo | Un stream de los resultados de una API |
StateNotifierProvider | Retorna una subclase de StateNotifier | Un objeto de estado complejo que es inmutable excepto a través de una interfaz |