Sobes.tech
Junior

Qual é a característica do uso de SharedPreferences no Flutter?

sobes.tech IA

Resposta da IA

SharedPreferences fornece uma API simples para armazenar pequenos volumes de dados (tipos primitivos: int, double, bool, String, List<String>) em forma de pares chave-valor. Os dados são armazenados de forma assíncrona. Isto é adequado para guardar configurações de utilizador, flags de estado e outras informações não críticas.

Características:

  • Facilidade de utilização: A API é leve e intuitiva.
  • Operações assíncronas: Todas as operações de leitura e escrita são assíncronas, evitando bloquear o thread da interface de utilizador.
  • Conjunto limitado de tipos: Apenas suporta tipos primitivos e listas de strings.
  • Não adequado para grandes volumes ou dados complexos: Não é eficiente para armazenar estruturas de dados grandes ou muitas entradas.
  • Dependência da plataforma: A implementação baseia-se em mecanismos nativos de armazenamento de dados (por exemplo, NSUserDefaults no iOS, SharedPreferences no Android).
  • Armazenamento inseguro para informações confidenciais: Os dados são armazenados em texto aberto, não sendo adequados para passwords ou outras informações sensíveis.
  • Requer await para acesso: A obtenção da instância de SharedPreferences e a realização de operações de leitura/escrita requerem o uso de await.

Exemplo de uso:

// Obter a instância de SharedPreferences
final prefs = await SharedPreferences.getInstance();

// Guardar dados
await prefs.setInt('counter', 10);
await prefs.setBool('isDarkMode', true);
await prefs.setString('username', 'FlutterDev');
await prefs.setStringList('items', ['apple', 'banana']);

// Ler dados
final counter = prefs.getInt('counter') ?? 0; // Uso de ?? para valor padrão
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];

// Remover dados
await prefs.remove('username');
await prefs.clear(); // Remove todos os dados