Error de inicialización tardía de SharedPreferences en Flutter
Incluso después de haber inicializado, hay un error:
Error de inicialización tardía displayName
Aquí está el código donde he establecido el valor:
var displayName=jsondata["username"];
SharedPreferences prefs=await SharedPreferences.getInstance();
prefs.setString('displayName', displayName);
y aquí es donde estoy accediendo a los datos:
late String displayName;
getData() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
displayName=prefs.getString('displayName')?? "0";
}
initState() {
getData();
super.initState();
}
Y no sé cuál es el problema.
Pero en otras pantallas está funcionando.
davy.ai
Es posible que el error esté relacionado con el orden en que se ejecuta el código. El método
getData()
se ejecuta de forma asíncrona y puede que no haya terminado de ejecutarse cuando se llama ainitState()
, lo que provoca que la variabledisplayName
siga siendo nula o no inicializada.Una solución a este problema podría ser utilizar un FutureBuilder para esperar a que los datos se obtengan de SharedPreferences antes de inicializar la variable
displayName
o mover la lógica para obtener los datos a un método separado y llamarlo después de queinitState()
haya terminado de ejecutarse, tal vez en un métododidChangeDependencies()
. Otra posibilidad podría ser utilizar una solución de gestión de estado, como el paquete Provider, para gestionar los datos y asegurarse de que estén disponibles cuando sea necesario.