1
resposta

Dúvida sobre ChangeNotifier

Olá. No módulo 2 do curso, é informado que será utilizado o pacote Provider para o gerenciamento de estado. Entretanto, no módulo 2 > aula 4 do curso. o instrutor Leonardo extende a classe ChangeNotifier do Material do Flutter, e não do pacote Provider recém instalado.

Pacote importado para utilização da classe ChangeNotifier

1 resposta

Olá, Eduardo, como vai?

O ChangeNotifier é uma classe que faz parte do Flutter, mais especificamente do pacote foundation. O Provider, por sua vez, é um pacote que facilita o uso do ChangeNotifier e outros padrões de gerenciamento de estado. Ele atua como uma camada de abstração que simplifica a forma como você utiliza o ChangeNotifier e outros mecanismos de notificação.

Quando o instrutor estende a classe ChangeNotifier, ele está utilizando a funcionalidade básica do Flutter para notificar ouvintes sobre mudanças de estado. O Provider entra em cena para facilitar o acesso e a distribuição desse estado pela árvore de widgets, sem precisar que você gerencie manualmente os ouvintes ou o contexto.

Por exemplo, ao criar uma classe Clients que estende ChangeNotifier, você está dizendo que essa classe pode notificar seus ouvintes sempre que houver uma mudança no estado. O Provider, por sua vez, permite que você disponibilize essa instância de Clients para toda a árvore de widgets de forma eficiente, utilizando o ChangeNotifierProvider.

Um exemplo simplificado:

class Clients extends ChangeNotifier {
  List<Client> clients = [];

  void addClient(Client client) {
    clients.add(client);
    notifyListeners(); 
  }
}

void main() {
  runApp(
    ChangeNotifierProvider(
      create: (context) => Clients(),
      child: MyApp(),
    ),
  );
}

Neste exemplo, a classe Clients estende ChangeNotifier para gerenciar uma lista de clientes e notificar mudanças. O ChangeNotifierProvider do pacote Provider é usado para disponibilizar essa instância de Clients para toda a aplicação.

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado