Error de navegación de getx. Se ha utilizado el operador de verificación nula en un valor nulo.
Necesito que cuando el usuario haga clic en el botón para agregar datos a Firebase, aparezca la barra de serpiente con un mensaje de éxito y luego regrese. Pero NO ocurre ninguna navegación.
El error ocurre cuando uso el navegador:
Error: Operador de comprobación de nulidad utilizado en un valor nulo
El código es:
class AddProductController extends GetxController {
addProduct() async {
if ((addProductFormKey.currentState?.validate() ?? false) && pickedPhoto != null) {
String docID = FirebaseFirestore.instance.collection('products').doc().id;
var url = "";
try {
UploadTask uploadTask = FirebaseStorage.instance
.ref('users/products/$docID/')
.putFile(pickedPhoto!);
uploadTask.whenComplete(() async {
url = await FirebaseStorage.instance
.ref('users/products/$docID/')
.getDownloadURL();
await FirebaseFirestore.instance
.collection("products")
.doc(docID)
.set({
"imgUrl": url,
}, SetOptions(merge: true));
Get.snackbar(
"Éxito",
"Su producto ha sido agregado",
snackPosition: SnackPosition.BOTTOM,
);
}).catchError((onError) {
print(onError);
});
return Get.toNamed(Routes.PRODUCTS); // => no funciona
} catch (e) {
print("\n Error $e \n");
}
}
}
}
davy.ai
Para lograr la funcionalidad deseada sin navegación, necesitamos eliminar la línea donde ocurre la navegación, que es
Get.toNamed(Routes.PRODUCTS)
. Esto evitará el error del operador nulo que se utiliza en un valor nulo durante la navegación.El código actualizado será:
Ahora, el mensaje de éxito se mostrará utilizando el método
Get.snackbar
, y no ocurrirá ninguna navegación, evitando el error.