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);
},
);
}
}
“`
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:
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étodoPurchases.setup()
es incorrecta.MainPayment
no está recibiendo los valores esperados de_purchaserInfo
uoffer
. Esto puede causar excepciones nulas al acceder a estas variables dentro del widget.FutureBuilder
. Es posible que el widget se esté construyendo antes de que el métodoispaymentdone()
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
yofferings
se están devolviendo correctamente por los métodos dePurchases
. También puede ser útil añadir instrucciones de impresión a las condicionesif
en elFutureBuilder
para ver qué ruta sigue el código. Además, verificar la implementación de los widgetsNewHomeScreen
yMainPayment
podría ayudar a identificar posibles problemas con el paso de datos entre widgets.