Last active
March 10, 2023 22:27
-
-
Save Klerith/8f6c75db4fb0696f6cdd5852b377b1e1 to your computer and use it in GitHub Desktop.
Flutter: Configuración singleton para las preferencias del usuario
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:shared_preferences/shared_preferences.dart'; | |
/* | |
Recordar instalar el paquete de: | |
shared_preferences: | |
Inicializar en el main | |
final prefs = new PreferenciasUsuario(); | |
await prefs.initPrefs(); | |
Recuerden que el main() debe de ser async {... | |
*/ | |
class PreferenciasUsuario { | |
static final PreferenciasUsuario _instancia = new PreferenciasUsuario._internal(); | |
factory PreferenciasUsuario() { | |
return _instancia; | |
} | |
PreferenciasUsuario._internal(); | |
SharedPreferences _prefs; | |
initPrefs() async { | |
this._prefs = await SharedPreferences.getInstance(); | |
} | |
// GET y SET del nombre | |
get nombre { | |
return _prefs.getString('nombre') ?? ''; | |
} | |
set nombre( String value ) { | |
_prefs.setString('nombre', value); | |
} | |
// GET y SET de la última página | |
get ultimaPagina { | |
return _prefs.getString('ultimaPagina') ?? 'login'; | |
} | |
set ultimaPagina( String value ) { | |
_prefs.setString('ultimaPagina', value); | |
} | |
} | |
@AyrtonAldayr si miras en mi repo esta la app fincional con null safety
Usando flutter dos me funcionaba en la version sin centralizar las shared_preferences, pero al pasarlo todo a una clase me da el siguiente error
Como se ve he tenido que poner la palabre clave late a la instancia de SharePreferences ¿Alguna posible solución?
Hola compañeros consultando el flutter el error es por la actualizacion a flutter 2+
ENCONTRE la siguiente solucion: en el archivo main.dart agrege en el metodo void main() async {
//
WidgetsFlutterBinding.ensureInitialized();//linea que se debe incluir .
final prefs = new PreferenciasUsuario();
await prefs.initPrefs();
//
runApp(MyApp());
//
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Si pones late funciona:
`late SharedPreferences _prefs;
initPrefs() async {
this._prefs = await SharedPreferences.getInstance();
}`