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.

Operador de verificación de nulos de Flutter utilizado en un valor nulo de Flutter.

Estoy intentando verificar si el usuario realiza un pago o no. Si se realiza el pago, el usuario verá la página de inicio. Si no se realiza el pago, el usuario verá la página de pago. El problema es que estoy obteniendo un error de “null check operator” utilizado en un valor nulo. ¿Qué estoy haciendo mal?

“`dart
class TwoPage extends StatelessWidget {
Package? offer;
PurchaserInfo? _purchaserInfo;
bool? payment;

Future<bool> ispaymentdone() async {
await Purchases.setDebugLogsEnabled(true);
await Purchases.setup("public_key");

<pre><code>PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo();
print(purchaserInfo);
print("buraya kadar iyi");

Offerings offerings = await Purchases.getOfferings();
print(offerings);

// manejo opcional de errores

// Si el widget se eliminó del árbol mientras el mensaje de plataforma asíncrono
// estaba en curso, queremos descartar la respuesta en lugar de llamar a
// setState para actualizar nuestra apariencia inexistente.
// if (!mounted) return;
_purchaserInfo = purchaserInfo;

if(purchaserInfo.entitlements.all["content-usage"]!=null){
if ( purchaserInfo.entitlements.all["content-usage"]!.isActive) {
print("trueee");
return true;
}
}

return false;
</code></pre>

}

@override
Widget build(BuildContext context) {
return FutureBuilder(
future: ispaymentdone(),
builder: (context, snapshot) {
if (snapshot.data == null)
return SizedBox(
child: Center(child: CircularProgressIndicator(color:Colors.purple)),
height: 10.0,
width: 10.0,
);
else if (snapshot.data == true)
return NewHomeScreen();
else
return MainPayment(purchaserInfo: _purchaserInfo, offer: offer);
},
);
}
}
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según el código proporcionado, no está claro qué podría estar causando el problema de un valor nulo siendo utilizado. Sin embargo, algunas posibles razones podrían ser:

    • El método Purchases.getPurchaserInfo() está devolviendo un valor nulo. Esto podría ocurrir si hay un problema con la conexión de red o si la clave pública utilizada en el método Purchases.setup() es incorrecta.
    • El widget MainPayment no está recibiendo los valores esperados de _purchaserInfo u offer. Esto puede causar excepciones nulas al acceder a estas variables dentro del widget.
    • Podría haber un problema con el flujo o el tiempo de los datos del FutureBuilder. Es posible que el widget se esté construyendo antes de que el método ispaymentdone() haya terminado de ejecutarse y, por lo tanto, devuelva un valor nulo.

    Para depurar el problema, se podría empezar por verificar si las variables purchaserInfo y offerings se están devolviendo correctamente por los métodos de Purchases. También puede ser útil añadir instrucciones de impresión a las condiciones if en el FutureBuilder para ver qué ruta sigue el código. Además, verificar la implementación de los widgets NewHomeScreen y MainPayment podría ayudar a identificar posibles problemas con el paso de datos entre widgets.

Comments are closed.