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:
Instalação do Pacote:
No arquivo
pubspec.yamldo seu projeto, adicione o pacoteget_itcomo uma dependência:
dependencies: get_it: ^7.2.0 # Versão mais recente do pacote get_it
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! }GetItcria 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 deString.
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.