O pacote get_it é uma ferramenta de gerenciamento de dependências para Flutter e Dart que facilita a injeção de dependências, ou seja, a disponibilização de objetos para serem utilizados por outros objetos em um aplicativo Flutter.


O que é injeção de dependências?

Imagine que você está montando um quebra-cabeça e precisa de várias peças para completá-lo. Cada peça é uma parte diferente do seu aplicativo, como uma classe para manipular dados ou executar uma determinada tarefa. A injeção de dependências é como juntar essas peças do quebra-cabeça de forma organizada e acessível, para que elas possam ser usadas quando e onde necessário.


Uso Básico do pacote get_it:

  1. Instalação do Pacote:

    • No arquivo pubspec.yaml do seu projeto, adicione o pacote get_it como uma dependência:

    dependencies:
      get_it: ^7.2.0  # Versão mais recente do pacote get_it
  2. Registrando e Acessando uma Instância:

    import 'package:get_it/get_it.dart';
    
    void main() {
    
      // Cria uma instância de GetIt (contêiner de injeção de dependência)
    
      GetIt locator = GetIt.instance;
    
      // Registrando uma instância de String como exemplo
    
      locator.registerLazySingleton<String>(() => 'Olá, Mundo!');
    
      // Acessando a instância registrada
    
      String minhaString = locator<String>();
    
      print(minhaString); // Saída: Olá, Mundo!
    
    }
    • GetIt cria um contêiner que permite registrar e acessar instâncias de objetos.

    • registerLazySingleton é usado para registrar uma instância de forma que ela seja criada apenas quando for acessada pela primeira vez.

    • locator<T>() é usado para acessar a instância registrada. No exemplo, estamos acessando uma instância de String.


Funcionalidades Adicionais:

  • Tipos de Registro:

    • registerSingleton: Registra um objeto como um singleton, garantindo que apenas uma instância seja criada e compartilhada.

    • registerFactory: Registra uma fábrica que produz instâncias de objetos sempre que é solicitado.

  • Parâmetros Nomeados:

    • locator.registerLazySingleton(() => MyClass(parametro: valor));

  • Classe de Referência Global:

    • GetIt.I.registerLazySingleton(() => MyClass());


Em resumo, o get_it é uma maneira conveniente de gerenciar dependências, especialmente útil para acesso global a objetos em toda a aplicação Flutter, proporcionando um controle fácil e flexível sobre a injeção e acesso de dependências.