El paquete get_it
es una implementación popular del patrón de localizador de servicios (Service Locator) en Flutter. Permite gestionar dependencias de forma eficiente, simplificando la inyección de dependencias y el acceso a servicios o repositorios desde cualquier parte de la aplicación.
get_it
y para qué se utiliza?
El paquete get_it
sirve para registrar y obtener instancias de clases (como servicios, controladores o repositorios) en una aplicación Flutter. Esto elimina la necesidad de pasar instancias manualmente entre widgets y facilita la gestión centralizada de dependencias.
get_it
en Flutter
Para utilizar get_it
, debes seguir estos pasos básicos:
1. Agregar el paquete a tu proyecto: Incluye get_it
en tu archivo pubspec.yaml
.
2. Registrar servicios o dependencias: Define qué instancias estarán disponibles globalmente.
3. Obtener las instancias registradas: Accede a los servicios desde cualquier parte de tu aplicación.
Método | Descripción |
---|---|
GetIt.instance
|
Obtiene la instancia única de get_it .
|
registerSingleton<T>()
|
Registra una instancia única de un servicio o clase. |
registerLazySingleton<T>()
|
Registra una instancia única que se crea la primera vez que se solicita. |
registerFactory<T>()
|
Registra una fábrica que crea una nueva instancia cada vez que se solicita. |
get<T>()
|
Obtiene una instancia registrada de un servicio. |
get_it
en Flutter
pubspec.yaml
dependencies:
get_it: ^7.6.0
Crea un archivo, por ejemplo, service_locator.dart
y registra tus dependencias:
import 'package:get_it/get_it.dart';
final getIt = GetIt.instance;
void setupLocator() {
getIt.registerSingleton<ExampleService>(ExampleService());
}
class ExampleService {
String fetchData() => "Hola desde ExampleService";
}
En tu widget o clase, obtén la instancia de la dependencia registrada:
import 'package:flutter/material.dart';
import 'service_locator.dart';
void main() {
setupLocator();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final exampleService = getIt<ExampleService>();
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Ejemplo de get_it")),
body: Center(child: Text(exampleService.fetchData())),
),
);
}
}
Registra una dependencia que se inicializa solo cuando es necesaria:
void setupLocator() {
getIt.registerLazySingleton<DatabaseService>(() => DatabaseService());
}
class DatabaseService {
void connect() => print("Conectado a la base de datos");
}
Cuando la obtengas por primera vez, se inicializa automáticamente:
final dbService = getIt<DatabaseService>();
dbService.connect(); // Salida: "Conectado a la base de datos"
Para más detalles, consulta la documentación oficial del paquete get_it.
Jorge García
Fullstack developer