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

widget.dificuldade?

Por que antes de refatorar o codigo, o Kako usou "widget.nomeDaVariavel" na Row de dificuldade, e quando ele foi refatorar ele colocou só o nome da variavel, sem o "widget." atras?

1 resposta
solução!

Oi Ryan, tudo bem?

O que acontece é que, quando estamos trabalhando dentro de um widget Stateful, precisamos usar a palavra-chave "widget" para acessar as variáveis definidas no widget. Isso ocorre porque estamos, na verdade, dentro do estado do widget, e não do widget em si. Portanto, "widget.nomeDaVariavel" é usado para acessar a variável do widget a partir do seu estado.

No entanto, quando Kako refatorou o código e criou um novo widget Stateless para a dificuldade, ele não precisou mais usar "widget." antes do nome da variável. Isso porque, neste caso, a variável "dificuldade" foi passada como um parâmetro para o novo widget Stateless, e poderia ser acessada diretamente.

Vou dar um exemplo para ilustrar isso:

Suponha que você tenha um widget Stateful assim:

class MeuWidget extends StatefulWidget {
  final String nome;
  MeuWidget({required this.nome});

  @override
  _MeuWidgetState createState() => _MeuWidgetState();
}

class _MeuWidgetState extends State<MeuWidget> {
  @override
  Widget build(BuildContext context) {
    return Text(widget.nome);
  }
}

Neste caso, você precisa usar "widget.nome" para acessar a variável "nome" dentro do método build, que está no estado do widget.

Agora, se você refatorar e criar um novo widget Stateless para o texto, ficaria assim:

class MeuTexto extends StatelessWidget {
  final String nome;
  MeuTexto({required this.nome});

  @override
  Widget build(BuildContext context) {
    return Text(nome);
  }
}

Neste caso, você pode acessar diretamente a variável "nome" dentro do método build, sem precisar usar "widget." antes.

Espero ter ajudado.

Um abraço e bons estudos.