Usando SharedPreferences no Flutter

Tempo de leitura: 2 minutes

O que é SharedPreferences?

SharedPreferences é usado para armazenar pares de valor-chave de dados no Android e no iOS.

SharedPreferences em flutter usa NSUserDefault no iOS e SharedPreferences no Android, fornecendo um armazenamento persistente para dados simples.

Por que usar SharedPreferences no Flutter?

Suponha que você queira salvar um pequeno valor (provavelmente um sinalizador) que deseja consultar mais tarde, quando um usuário iniciar o aplicativo. Então a preferência compartilhada entra em ação.

Não usamos o SQLite para salvar valores pequenos porque você precisará escrever códigos longos e classes de suporte.

A Preferência Compartilhada permite que você leia e escreva facilmente o par chave-valor em algumas linhas. Mas lembre-se sempre, a preferência compartilhada não é uma solução para você manter dados relacionais complexos.

 

Como usar SharedPreferences no Flutter?

Antes de usar o SharedPreferences, você deve saber que o Flutter SDK não oferece suporte ao SharedPreferences, mas, felizmente, o plug-in shared_preferences pode ser usado para manter os dados de valor-chave no disco.

Implementação

Etapa 1: adicionar as dependências

Adicione dependências ao arquivo pubspec.yaml.

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.1.0

Etapa 2: Importar shared_preferences.dart

import 'package:shared_preferences/shared_preferences.dart';

 

Etapa 3: salvar dados

Só podemos adicionar int, String, double e bool usando SharedPreferences.

Existem métodos setter na classe SharedPreferences que usam dois parâmetros, chave e valor.

As chaves são apenas valores de string

Salvando o valor da string

addStringToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setString('stringValue', "abc");
}

Salvando valor int

addIntToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setInt('intValue', 123);
}

Salvando valor double

addDoubleToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setDouble('doubleValue', 115.0);
}

Salvando valor boolean

addBoolToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setBool('boolValue', true);
}

 

Etapa 4: Leia os dados

Quando estamos lendo os dados do armazenamento por meio de SharedPreferences, precisamos apenas passar a chave.

getStringValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return String
  String stringValue = prefs.getString('stringValue');
  return stringValue;
}
getBoolValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return bool
  bool boolValue = prefs.getBool('boolValue');
  return boolValue;
}
getIntValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return int
  int intValue = prefs.getInt('intValue');
  return intValue;
}
getDoubleValuesSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Return double
  double doubleValue = prefs.getDouble('doubleValue');
  return doubleValue;
}

Se o valor não estiver presente no armazenamento, poderemos obter um valor nulo.

Para lidar com isso, podemos usar

int intValue= await prefs.getInt('intValue') ?? 0;

 

Etapa 5: remover dados

Para remover os dados do armazenamento, fornecemos a chave no método remove(String key).

removeValues() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  //Remove String
  prefs.remove("stringValue");
  //Remove bool
  prefs.remove("boolValue");
  //Remove int
  prefs.remove("intValue");
  //Remove double
  prefs.remove("doubleValue");
}

 

Verifique o valor se presente ou não?

SharedPreferences prefs = await SharedPreferences.getInstance();

bool CheckValue = prefs.containsKey('value');

containsKey retornará true se o armazenamento persistente contiver a chave fornecida e false se não.

 

Obrigado por ler este artigo ❤