1
resposta

InheritedWidget with async methods calling external API

Estou fazendo um projeto de teste após concluir o Flutter 3.0 e me deparei com um cenário que passei em aula, onde eu tenho uma list de usuário e em outra tela vou adicionar usuários à essa lista.

Nas aulas aprendi que se usa um InheritedWidget para isso. A diferença é que agora estou usando uma API para retornar a lista de usuários inicial e um Model para parsear os dados que vem da API.

Porém a lista de users não tem metodos como add, length e etc. Alguém consegue me ajudar por favor ?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Aprendizado!

Que bom que você está aplicando o que aprendeu no curso em um projeto de teste, parabéns!

Pelo que entendi, você está utilizando um InheritedWidget para compartilhar a lista de usuários entre diferentes telas. No entanto, a lista de usuários não possui métodos como add, length, entre outros, porque você está obtendo esses dados de uma API e utilizando um Model para fazer o parse dos dados.

Uma solução para adicionar usuários à lista seria criar um método no seu Model que faça a requisição à API e adicione o usuário retornado à lista. Por exemplo:

class UserModel {
  List<User> users = [];

  Future<void> fetchUsers() async {
    // Lógica para fazer a requisição à API e adicionar os usuários à lista
    // Utilize as funções assíncronas disponíveis no pacote http para fazer a requisição
    // e o método addAll para adicionar os usuários à lista
  }

  // Outros métodos do seu Model
}

Dessa forma, sempre que você chamar o método fetchUsers, ele irá fazer a requisição à API, obter os usuários e adicioná-los à lista.

Lembre-se de chamar esse método em algum momento antes de utilizar a lista de usuários nas suas telas. Por exemplo, você pode chamar o método fetchUsers no initState de uma tela que depende da lista de usuários.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software