1
resposta

Set State não funciona

Estou fazendo o curso porem adaptando em outra aplicação e a parte do refresh não funciona, pois ela foi montada de uma forma aonde todo o aplicativo é feito em uma só pagina e nesse curso não teve refatoração entao nao consigo usar o refresh na pagina de adicionar lista logo o set state nao funciona poderiam me informar uma alternativa para isso ?

1 resposta

Olá Henrique!

Obrigado por compartilhar sua dúvida conosco. Desculpa a demora. Eu estou respondendo esse tópico para tentar ajudar você e outros alunos com essa mesma dúvida.

Entendo que você está enfrentando um problema com o uso do setState em sua aplicação, devido ao fato de todo o aplicativo estar sendo construído em uma única página e não ser possível utilizar o refresh na página de adicionar lista.

Uma alternativa para contornar essa situação é utilizar o Provider, uma biblioteca que permite o gerenciamento de estado de forma global na sua aplicação. Com o Provider, você pode compartilhar o estado entre diferentes partes do seu aplicativo, mesmo que estejam em páginas diferentes.

Você pode criar um ChangeNotifier para representar o estado da sua aplicação e utilizar o Provider para fornecer esse estado para as partes que precisam dele. Assim, quando você precisar atualizar o estado, basta chamar um método no seu ChangeNotifier e o Provider se encarregará de notificar todas as partes que dependem desse estado para que sejam atualizadas.

Aqui está um exemplo de como você pode implementar isso:

  1. Crie uma classe que estende ChangeNotifier para representar o estado da sua aplicação. Por exemplo:
class AppState extends ChangeNotifier {
  int counter = 0;

  void incrementCounter() {
    counter++;
    notifyListeners();
  }
}
  1. Em seu widget principal, envolva-o com o ChangeNotifierProvider, fornecendo uma instância do AppState. Por exemplo:
ChangeNotifierProvider(
  create: (_) => AppState(),
  child: MaterialApp(
    // ...
  ),
)
  1. Em qualquer widget que precise acessar ou modificar o estado, utilize o Consumer para obter o estado fornecido pelo Provider. Por exemplo:
Consumer<AppState>(
  builder: (context, appState, _) {
    return Text(appState.counter.toString());
  },
)
  1. Para atualizar o estado, basta chamar o método apropriado no seu ChangeNotifier. Por exemplo:
RaisedButton(
  onPressed: () {
    Provider.of<AppState>(context, listen: false).incrementCounter();
  },
  child: Text('Increment'),
)

Dessa forma, sempre que o estado for atualizado, o Consumer será notificado e atualizará automaticamente a interface do usuário.

Espero que essa alternativa seja útil para você! Se tiver mais alguma dúvida, estou à disposição. 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