SharedPreferences en Flutter: ejercicio resuelto para guardar ajustes

  2 minutos

Si buscas guardar datos locales en Flutter, este ejercicio con SharedPreferences es un punto de partida ideal.

Guarda y recupera un nombre de usuario localmente para mantenerlo tras cerrar la app.

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() => runApp(const MaterialApp(home: PreferencesPage()));

class PreferencesPage extends StatefulWidget {
  const PreferencesPage({super.key});

  @override
  State<PreferencesPage> createState() => _PreferencesPageState();
}

class _PreferencesPageState extends State<PreferencesPage> {
  final ctrl = TextEditingController();
  String savedName = '';

  @override
  void initState() {
    super.initState();
    loadName();
  }

  Future<void> loadName() async {
    final prefs = await SharedPreferences.getInstance();
    setState(() => savedName = prefs.getString('name') ?? '');
  }

  Future<void> saveName() async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString('name', ctrl.text.trim());
    await loadName();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('SharedPreferences')),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          children: [
            TextField(controller: ctrl, decoration: const InputDecoration(labelText: 'Nombre')),
            const SizedBox(height: 12),
            ElevatedButton(onPressed: saveName, child: const Text('Guardar')),
            const SizedBox(height: 16),
            Text('Guardado: $savedName'),
          ],
        ),
      ),
    );
  }
}

El nombre se mantiene después de cerrar y abrir la app.

  • Guardar objetos complejos en SharedPreferences.
  • No esperar operaciones asíncronas.
  • No validar entrada antes de guardar.

Ideal para preferencias de usuario, flags de onboarding y ajustes básicos.

No. Para datos sensibles usa almacenamiento seguro cifrado.

Está pensado para pares clave-valor pequeños, no para grandes volúmenes.

Cuando necesitas consultas, relaciones o persistencia estructurada.