1
resposta

Classe Editor

Boa noite. Segui os passos do video porem no meu codigo porem deu um erro. Pode me ajudar?

class Editor extends StatelessWidget { final TextEditingController controlador; final String rotulo; final String dica; final IconData icone;

Editor({this.controlador, this.rotulo, this.dica, this.icone}); Estes itens estão sublinhados em vermelho

@override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(16.0), child: TextField( controller: controlador, style: const TextStyle( fontSize: 24.0, ), decoration: InputDecoration( icon: Icon(icone), labelText: rotulo, hintText: dica, ), keyboardType: TextInputType.number, ), ); } }

1 resposta

Oi, provavelmente os itens estão sublinhados em vermelho porque eles estão declarados como final, mas não esta garantido que eles vão receber um valor ao serem inicializados pelo construtor.

Para evitar o problema, basta adicionar "required" antes dos itens no construtor ou atribuir um valor a eles caso não sejam passados os valores.

Editor({requried this.controlador, required this.rotulo, required this.dica, required this.icone})

Note que ao fazer deste jeito, toda vez que você for criar uma instancia do Editor vai precisar passar um valor para todos os campos.

Também daria para fazer um verificação antes de usar os valores no TextField. vou deixar um exemplo onde só o ícone é opcional com base no seu código.

class Editor extends StatelessWidget {
    final TextEditingController controlador;
    final String rotulo;
    final String dica;
    final IconData? icone;

    const Editor({
        required this.controlador,
        required this.rotulo,
        required this.dica,
        this.icone,
    });

    @override
    Widget build(BuildContext context) {
        return Padding(
            padding: const EdgeInsets.all(16.0),
            child: TextField(
                controller: controlador,
                style:  const TextStyle(
                    fontSize: 24.0,
                ),
                decoration: InputDecoration(
                    icon: icone != null ? Icon(icone) : null,
                    labelText: rotulo,
                    hintText: dica,
                ),
                keyboardType: TextInputType.number,
            ),
        );
    }
}