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.

Funciones de Flutter con errores de seguridad nula

Obtuve los siguientes errores y no sé cómo actualizar el código para resolverlo.

Error: No se puede usar una expresión de tipo ‘Function?’ como una función porque es potencialmente nulo.
– ‘Function’ es de ‘dart:core’.
Intente llamar usando ? .call en su lugar.
PageName nextPage = pageName_pageFunction_map[PageName.welcomePage];
PageName nextPage2 = pageName_pageFunction_map[nextPage];

El código:

enum PageName {
welcomePage,
register,
login,
editProfile,
showProfile,
resetPassword,
errorUserExists,
}

Map<pagename, function=””> pageName_pageFunction_map = {
PageName.welcomePage: showWelcomePage,
PageName.register: showRegisterPage,
PageName.login: showLoginPage,
PageName.editProfile: showEditProfile,
PageName.showProfile: showUserProfile,
PageName.resetPassword: showResetPassword,
PageName.errorUserExists: showErrorUserExists,
};

void main() {
PageName nextPage = pageName_pageFunction_map[PageName.welcomePage]?.call();
if (nextPage != null) {
while (true) {
PageName nextPage2 = pageName_pageFunction_map[nextPage]?.call();
if (nextPage2 != null) {
nextPage = nextPage2;
}
}
}
}

¿Puedes ayudarme? Gracias</pagename,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedo ayudarte. El mensaje de error te indica que estás tratando de usar una Function que potencialmente es nula, pero no se puede usar un valor nulo como función. Para solucionar este problema, necesitas utilizar el operador de llamada segura ?.call que te permite llamar a la función solo si no es nula. Así es como puedes actualizar tu código:

    Reemplaza la siguiente línea:

    PageName nextPage = pageName_pageFunction_map[PageName.welcomePage]();
    PageName nextPage2 = pageName_pageFunction_map[nextPage]();
    

    Con:

    PageName nextPage = pageName_pageFunction_map[PageName.welcomePage]?.call();
    PageName nextPage2 = pageName_pageFunction_map[nextPage]?.call();
    

    Al agregar ?.call() después de la llamada a la función, le estás indicando a Dart que llame a la función solo si no es nula. Esto debería solucionar el error que estás viendo.

Comments are closed.