1
resposta

[Dúvida] Não consigo criar um parâmetro na class Stateless

Por que não consigo criar um parâmetro de ícone ("IconName")?

Segue código:

class TopBottom extends StatelessWidget { final String IconName; const TopBottom(this.IconName,{Key? key}) : super(key: key);

@override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.symmetric(vertical: 30, horizontal: 10), child: Container( decoration: const BoxDecoration( shape: BoxShape.circle, color: Color(0xFF105ab4), ), width: 70, height: 70, child: IconButton( onPressed: () {}, icon: const Icon(Icons.IconName), color: Colors.white, iconSize: 38, ), ), ); } }

1 resposta

O widget Icon() requer a entrada de um IconData e não uma string, como vocês está tentando. Para que funcione, voce precisara passar um parâmetro do tipo IconData e não uma string.

Também é importante perceber que o modificador const deve ser removido do widget Icon, uma vez que você deseja passar uma variável e consequentemente não pode ser constante.

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

  final IconData iconName;

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: EdgeInsets.symmetric(vertical: 30, horizontal: 10),
      child: Container(
        decoration: const BoxDecoration(
          shape: BoxShape.circle,
          color: Color(0xFF105ab4),
        ),
        width: 70,
        height: 70,
        child: IconButton(
          onPressed: () {},
          icon: Icon(iconName),
          color: Colors.white,
          iconSize: 38,
        ),
      ),
    );
  }
}