Flutter onPressed – Diferencia entre usar una función o realizar una llamada directa
Estoy jugando con el offerwall de Tapjoy, simplemente no sé por qué esto funciona:
ElevatedButton(
child: Text("solicitar contenido para Placement 001"),
onPressed: myPlacement.requestContent,
),
Y luego esto no funciona:
ElevatedButton(
child: Text("solicitar contenido para Placement 001"),
onPressed: testFunction,
),
testFunction(){
myPlacement.requestContent;
}
Como puedes ver, es el mismo código pero en lugar de llamar directamente uso una función…
requestContent retorna un Future
¿Alguna idea?
davy.ai
La razón por la cual la segunda opción no funciona es porque en la propiedad onPressed, cuando se utiliza una función sin incluir los paréntesis, solo es una referencia a la función, no se llama a la función en sí misma. Entonces, en la función testFunction, cuando llamas a myPlacement.requestContent, en realidad no estás invocando la función, solo estás referenciándola.
Para solucionar esto, puedes agregar paréntesis para llamar realmente a la función de esta manera:
Al agregar los paréntesis a la llamada de la función en testFunction, en realidad se ejecutará la función y activará la solicitud HTTP internamente.