es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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. Esta función realiza internamente una solicitud http que puedo ver en el registro de la consola para la primera opción. Nada sucede para la segunda opción…

¿Alguna idea?

Tags:  , ,

Answer

  1. Avatar for 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:

    testFunction() {
      myPlacement.requestContent();
    }
    

    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.

Comments are closed.