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