Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Quando usar classe ou método no Flutter?

Assistindo às aulas, fiquei com uma dúvida de quando devo criar um classe que herde de StatelessWidget ou StatefulWidget e quando devo criar um método que retorne um Widget específico.

Por exemplo: Widget:

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Exemplo"),
      ),
      body: Center(
        child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: const [
              Text('Teste'),
            ]
        ),
      ),
    );
  }
}

Método:

Scaffold myHomePage(){
  return Scaffold(
    appBar: AppBar(
      title: const Text("Exemplo"),
    ),
    body: Center(
      child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: const [
            Text('Teste'),
          ]
      ),
    ),
  );
}
1 resposta
solução!

Olá, Vinicius.

Tudo bem?

Sua pergunta é muito relevante, pois trata de uma decisão de design que pode afetar a estrutura e a legibilidade do seu código.

No Flutter, tanto as classes que herdam de StatelessWidget ou StatefulWidget quanto os métodos que retornam um Widget podem ser usados para criar interfaces de usuário. A escolha entre um e outro depende principalmente do nível de complexidade do widget que você está criando e se ele precisa manter um estado.

Se você está criando um widget simples que não precisa manter um estado, um método que retorna um widget pode ser suficiente. Isso pode tornar seu código mais enxuto e fácil de ler. No entanto, se o widget que você está criando é mais complexo e precisa manter um estado, é recomendado criar uma classe que herde de StatefulWidget.

No seu exemplo, tanto a classe MyHomePage quanto o método myHomePage() fazem a mesma coisa: eles retornam um widget Scaffold. A diferença é que a classe MyHomePage é mais versátil e pode ser estendida para incluir mais funcionalidades no futuro, enquanto o método myHomePage() é mais simples e direto.

Um exemplo prático disso seria se você quisesse adicionar um botão que, quando clicado, altera o texto exibido. Isso seria fácil de implementar se você estivesse usando uma classe que herda de StatefulWidget, pois você poderia adicionar um estado ao widget. No entanto, se você estivesse usando um método que retorna um widget, isso seria mais complicado de implementar, pois os métodos não podem manter um estado.

Em resumo, se o widget que você está criando é simples e não precisa manter um estado, um método que retorna um widget pode ser suficiente. No entanto, se o widget é mais complexo e precisa manter um estado, é melhor criar uma classe que herde de StatefulWidget.

Espero ter ajudado. Qualquer dúvida manda aqui. 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