Sobes.tech
Junior

¿Qué son SharedPreferences y cómo se usan?

sobes.tech AI

Respuesta de la IA

SharedPreferences es un mecanismo sencillo para guardar pequeños volúmenes de datos en pares clave-valor. Es ideal para guardar configuraciones de usuario o pequeñas banderas.

Uso:

  1. Agregar dependencia: En el archivo pubspec.yaml agregamos:

    dependencies:
      flutter:
        sdk: flutter
      shared_preferences: ^2.2.0 # Usa la versión actual
    

    y ejecutamos flutter pub get.

  2. Importar:

    import 'package:shared_preferences/shared_preferences.dart';
    
  3. Obtener instancia:

    // Operación asíncrona
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
  4. Guardar datos:

    // Guardar cadena
    prefs.setString('username', 'Alice');
    // Guardar número (int)
    prefs.setInt('age', 30);
    // Guardar número (double)
    prefs.setDouble('salary', 50000.50);
    // Guardar valor booleano
    prefs.setBool('darkMode', true);
    // Guardar lista de cadenas
    prefs.setStringList('items', ['item1', 'item2']);
    

    Todos los métodos de guardado devuelven Future<bool>, indicando el éxito de la operación.

  5. Leer datos:

    // Leer cadena
    String? username = prefs.getString('username'); // Retorna null si la clave no existe
    // Leer número (int)
    int? age = prefs.getInt('age');
    // Leer número (double)
    double? salary = prefs.getDouble('salary');
    // Leer valor booleano
    bool? darkMode = prefs.getBool('darkMode');
    // Leer lista de cadenas
    List<String>? items = prefs.getStringList('items');
    
  6. Eliminar datos:

    // Eliminar por clave
    prefs.remove('username'); // Retorna Future<bool>
    // Eliminar todos los datos
    prefs.clear(); // Retorna Future<bool>
    

Restricciones:

  • No apto para almacenar grandes volúmenes de datos o estructuras complejas.
  • Los datos se almacenan en forma abierta (aunque a nivel de la aplicación), no apto para información sensible.
  • Funciona con tipos de datos básicos. Para objetos, se requiere serialización/deserialización (por ejemplo, usando json).