En Flutter, moitos widgets personalizados (como botóns, iconas ou contedores táctiles) precisan executar unha acción cando o usuario realiza unha interacción, por exemplo, ao premer unha tecla ou tocar un botón.
Para conseguilo, o widget non executa directamente a acción, senón que recibe unha función (callback) definida polo widget pai.
Deste modo, o widget pai decide que facer, e o fillo simplemente chama á función cando corresponde.
⚙️ Como se define un callback #
Para permitir esa comunicación entre widgets, o fillo define un atributo de tipo función, que gardará a referencia á función que debe chamarse.
Hai dúas formas habituais de definilo:
final void Function(int) nome1; // función con parámetro
final VoidCallback nome2; // función sen parámetros
💡 Tipos de callbacks e usos máis comúns #
| Tipo | Firma da función | Descrición | Exemplo típico |
|---|---|---|---|
VoidCallback | void Function() | Callback sen parámetros e sen retorno. Úsase cando só hai que executar unha acción. | onPressed: _borrar |
void Function(int) | void Function(int valor) | Callback cun parámetro enteiro. Úsase cando o widget necesita comunicar un número (ex.: unha tecla). | onTap: (n) => _pulsarNumero(n) |
void Function(String) | void Function(String texto) | Callback cun parámetro tipo texto. Úsase en campos de entrada como TextField. | onChanged: (valor) => print(valor) |
Notas:
- Se non precisas datos, usa
VoidCallback.- Se precisas pasar un valor, usa
void Function(Tipo)(por exemplo,void Function(int)).
Equivalentes (sen parámetros):
final VoidCallback accion1;
final void Function() accion2; // fan o mesmo
⚡ Callback sen parámetros: VoidCallback #
O tipo VoidCallback é a forma máis sinxela de definir un callback en Flutter.
Representa unha función sen argumentos e sen retorno, que se executa cando ocorre unha acción.
É moi común en botóns e xestos, como ElevatedButton, IconButton ou GestureDetector.
🧠 Exemplo práctico #

👉 O fillo (
BotonSimple) non sabe o que debe facer;
só chama aonTap()cando o usuario o preme, e o pai decide a acción concreta.
🧩 Callback con parámetros #
Hai casos nos que non chega con saber que se premeu, senón que valor se premeu.
Por exemplo, nun teclado de calculadora, queremos saber que número tocou o usuario.
Para iso non abonda con VoidCallback (que non admite parámetros).
Debemos usar unha función que reciba un argumento, como:
final void Function(int) onNumero;
⚙️ Que significa cada parte #
| Elemento | Descrición |
|---|---|
final | Indica que a propiedade non pode cambiar tras inicializarse (os widgets son inmutables). |
void Function(int) | Tipo de función que non devolve nada (void) pero recibe un parámetro enteiro (int). |
onNumero | Nome do callback (o identificador da función que se executará). |
🧠 Exemplo #

📌 Neste exemplo,
onTapé unha función que recibirá o valor do número cando o usuario prema a tecla.O widget pai define que facer co número recibido, mentres o fillo só sabe que debe chamar a
onTap(numero)cando se preme.
🧭 Resumo visual #
Pai → define a lóxica
↓
Fillo → chama ao callback pasando o valor
onTap(numero)