Volver a la página principal
viernes 22 noviembre 2024
9

Cómo usar get_it en Flutter

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.

¿Qué es 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.

Cómo funciona 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.

Tabla de funciones principales

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.

Ejemplo básico de uso de get_it en Flutter

Paso 1: Agregar el paquete a pubspec.yaml

dependencies:
  get_it: ^7.6.0

Paso 2: Configurar las dependencias

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";
}

Paso 3: Obtener y usar una dependencia

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())),
      ),
    );
  }
}

Ejemplo avanzado: Lazy Singleton

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"

Referencias oficiales

Para más detalles, consulta la documentación oficial del paquete get_it.

Etiquetas:
dart flutter
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer