GEEKS

Como usar SharedPreferences para armazenar configurações de aplicativos com Flutter – CloudSavvy IT

Como usar SharedPreferences para armazenar configurações de aplicativos com Flutter – CloudSavvy IT

[ad_1]

Preferências Compartilhadas é um módulo que traz a funcionalidade do Android API de mesmo nome para seus aplicativos Flutter multiplataforma. Ele america a API NSUserDefaults semelhante da Apple ao ser executado no iOS e no macOS. As implementações também estão incluídas para Linux e Home windows para que ele seja executado em todos os lugares que os aplicativos Flutter puderem.



Neste guia, mostraremos como você pode usar SharedPreferences para manter configurações simples em seu aplicativo. O módulo é melhor usado para pequenos pedaços de estado não essencial, como preferências do usuário, favoritos salvos e valores de configuração em cache enviados por um servidor.

Adicionando preferências compartilhadas

Adicione o módulo SharedPreferences ao seu aplicativo usando as CLIs do Flutter pub upload comando:

flutter pub upload shared_preferences

Faça referência à biblioteca em seu código importando-a na parte awesome de seus arquivos Dart:

import 'bundle:shared_preferences/shared_preferences.dart';

Você poderá acessar o SharedPreferences API dentro de arquivos que incluem isso import declaração.

Adicionando dados a SharedPreferences

Para começar a usar SharedPreferences, você deve primeiro obter uma instância do SharedPreferences classe que está conectada ao arquivo de configuração em disco do seu aplicativo. Ligar para getInstance() método estático para carregar e analisar o arquivo em um SharedPreferences instância. Este é um método assíncrono, então use o anticipate palavra-chave dentro de um async função para agilizar o acesso.

void major() async 
    var prefs = anticipate SharedPreferences.getInstance();

Agora você pode usar os métodos do prefs instância para armazenar e recuperar seus dados. SharedPreferences funciona com pares chave-valor. Ele suporta cinco tipos de dados: int, String, bool, doublee Record<String>. Os valores são adicionados à loja usando métodos setter; cada método recebe um nome de chave como seu primeiro parâmetro e um valor como seu segundo:

prefs.setBool("darkTheme", true);

Para trabalhar com outros tipos de valor, chame seus métodos setter correspondentes:

prefs.setString("theme", "darkish");
 
prefs.setInt("sessionId", 1000);
 
prefs.setDouble("lastTemperature", 18.5);
 
prefs.setStringList("featureFlags", ["darkTheme", "redesign"]);

Os setters não aceitam null como um valor. Use o separado take away() método para excluir um merchandise da loja:

prefs.take away("sessionId");

Para excluir todas as configurações armazenadas, ligue para o transparent() método. As limpezas são operações assíncronas que são resolvidas quando o arquivo de configurações em disco é removido.

Tipos complexos

Você não pode persistir nativamente tipos complexos, como objetos, mapas e listas sem string. Para armazenar um desses, você pode codificá-lo como JSON e usar o setString() método:

import 'dart:convert';
import 'bundle:shared_preferences/shared_preferences.dart';
 
void major () async 
    var bookmarkedArticles = [10, 15, 18];
    var prefs = anticipate SharedPreferences.getInstance();
    prefs.setString("bookmarks", jsonEncode(bookmarkedArticles));

Chamar jsonDecode() quando você recupera o valor com getString() (veja abaixo) para convertê-lo de volta para um tipo de Dart apropriado.

Recuperando Dados Persistentes

Os valores são recuperados usando métodos getter. Assim como com os setters, há um getter exclusivo para cada tipo de dados suportado. Isso significa que você pode usar com segurança os valores de retorno sem precisar converter manualmente entre os tipos.

var theme = prefs.getString("theme");
// "darkish"
 
var sessionId = prefs.getInt("sessionId");
// 1000
 
var lastTemperature = prefs.getDouble("lastTemperature");
// 18.5

É importante que você use o getter que corresponda ao tipo de dados do valor armazenado. Se a chave corresponder, mas tiver um tipo de dados diferente, uma exceção será lançada.

Nulo é retornado quando a chave não existe nos dados salvos. Você pode verificar se um merchandise está na loja com antecedência ligando para containsKey():

if (prefs.containsKey("theme")) 
    // ...

Você também pode enumerar todas as chaves na loja:

var keys = pref.getKeys();

Isso é útil quando você precisa saber o que está salvo no disco no momento para poder executar migrações apropriadas após uma atualização de aplicativo.

Advertências e Limitações

É fácil trabalhar com SharedPreferences quando você está armazenando pares de valores-chave simples. No entanto, você não deve confiar nele para dados críticos ou valores sensíveis à segurança.

As implementações específicas da plataforma variam, mas você deve presumir que seus dados serão armazenados como texto simples em um native potencialmente acessível ao usuário. Criptografar valores antes de salvá-los pode adicionar mais proteção, mas ainda deixará as chaves expostas.

SharedPreferences é uma API assíncrona. Embora os métodos getter e setter pareçam síncronos, isso não se estende até o nível do disco. Gravações de disco pode ser assíncrono portanto, fechar o aplicativo imediatamente após definir um valor pode fazer com que ele seja perdido.

É melhor escolher uma API diferente ao armazenar grandes quantidades de dados, gravar valores complexos ou precisar de um modelo operacional mais confiável com tratamento de erros resiliente. Você poderia usar o API de arquivos para gravar um arquivo de configuração personalizado em um native restrito ou criar um banco de dados SQLite para seu aplicativo. A última abordagem é best quando você deseja realizar consultas avançadas nos dados armazenados.

Escrevendo testes de unidade

SharedPreferences inclui um utilitário para ajudá-lo a escrever testes de unidade sem um armazenamento de preferências actual. A estática setMockInitialValues() permite injetar valores que preencherão a instância retornada por getInstance():

void major() async 
 
    Map<String, Object> values = <String, Object>"foo": "bar";
    SharedPreferences.setMockInitialValues(values);
 
    var example = anticipate SharedPreferences.getInstance();
    var foo = example.getString("foo");
    // bar
 

Você pode adicionar configurações ao seu aplicativo enquanto mantém sua capacidade de testar cada componente. Testar o código que recupera suas configurações permite garantir que o aplicativo se comporte corretamente em cada cenário.

Resumo

SharedPreferences é uma maneira conveniente de manter o estado simples dentro do seu aplicativo Flutter. Ele se concentra no armazenamento e na recuperação de pares de valores-chave usando os tipos de dados mais comuns. SharedPreferences é melhor usado para configurações não essenciais em que uma gravação com falha não afetará negativamente seu aplicativo.

Pode ser eficaz aproveitar SharedPreferences de maneira semelhante aos cookies em aplicativos da internet. Contadores básicos, valores booleanos e chaves de configuração fazem sentido em SharedPreferences; todo o resto pertence a uma estrutura de dados bem definida que você pode gerenciar com mais precisão.

[ad_2]

Fonte da Notícia

Artigos relacionados

Botão Voltar ao topo