Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev2.0.4

json_store

Uma solução de armazenamento do Flutter semelhante ao localStorage do navegador (mas super potente)

AndroidiOSmacOS
Downloads em 30 dias
2,6 mil
Curtidas
39
Pontos Pub
150

Instalar pacote

flutter pub add json_store

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

json_store é um pacote Flutter que oferece uma solução de armazenamento persistente e semelhante ao NoSQL inspirada no localStorage do navegador. Permite o salvamento fácil e recuperação de dados serializáveis em JSON após reinicializações do aplicativo no Android, iOS e macOS. Projetado para simplicidade e desempenho, suporta operações assíncronas e serialização/desserialização automática, tornando-o ideal para armazenar preferências do usuário, dados em cache ou pequenos conjuntos de dados sem a necessidade de configurar um banco de dados completo.

Casos de uso

  • Armazenando preferências do usuário
  • Armazenando em cache respostas da API
  • Persistência do estado do aplicativo
  • Salvando dados do formulário
  • Gerenciando a configuração local
  • Gerenciamento de dados offline

Principais recursos

  • Armazenamento baseado em JSON
  • Suporte multiplataforma
  • Operações assíncronas
  • Serialização automática
  • API simples
  • Leve e rápido

Indicado para

  • Armazenamento de dados pequeno a médio
  • Aplicativos que precisam de capacidades offline
  • Prototipagem ou desenvolvimento de MVP
  • Necessidades simples de persistência de dados
  • Desenvolvedores evitando bancos de dados complexos

Considerações

  • Não adequado para grandes conjuntos de dados
  • Capacidades limitadas de consulta
  • Sem sincronização de dados embutida
  • Melhor para padrões simples de chave-valor
  • Não suporta relacionamentos complexos

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

json_store

A Storage solution somewhat similar to a browser's localStorage in the sence that it is a key value pair storage. The value should be a dart reprisentation of a JSON Object (aka a Map<String, dynamic>)

Features

  • Data is stored in sqflite Database
  • Data may be fully encrypted (encrypt)
  • Encryption keys are stored in Keychain and Keystore thanks to flutter_secure_storage
  • Because the DB schema never changes, there is no concern about database migrations
  • Batch processing
  • Data stored has a time to live. Whenever a getItem is done on a key which ttl has expired, that key will be deleted and a null value will be returned

Getting Started

In your flutter project add the dependency:

dependencies:
  ...
  json_store:
  ...

For help getting started with Flutter, view the online documentation.

Usage example

See example folder for full sample app

Note: JsonStore is a singleton and instantiating with factory constructor JsonStore() will only ever have one instance

Simple example
import 'package:json_store/json_store.dart';

class CounterModel {
  int value;
  CounterModel(this.value);
  CounterModel.fromJson(Map<String, dynamic> json) : this.value = json['value'];
  Map<String, dynamic> toJson() => {'value': value};
}

...

JsonStore jsonStore = JsonStore();
CounterModel counter;

loadFromStorage() async {
  Map<String, dynamic> json = await jsonStore.getItem('counter');
  counter = json != null ? CounterModel.fromJson(json) : CounterModel(0);
}

incrementCounter() async {
  counter.value++;
  await jsonStore.setItem('counter', counter.toJson());
}

...
Batch example

When adding a lot of data at a time (Like a long list of messages), use the batch feature as it will improve performance significantly

class Message {
  final int id;
  final String title;
  final String body;
  
  Message([this.id, this.title, this.body]);
  Message.fromJson(Map<String, dynamic> json)
      : this.id = json['id'],
        this.title = json['title'],
        this.body = json['body'];
  Map<String, dynamic> toJson() => {
        'id': id,
        'title': title,
        'body': body,
      };
}

saveBigList() {
  Batch batch = await jsonStore.startBatch();
  await Future.forEach(_messages, (message) async {
    await jsonStore.setItem(
      'messages-${message.id}',
      message.toJson(),
      batch: batch,
    );
  });
  jsonStore.commitBatch(batch);
}

loadBigList() {
      List<Map<String, dynamic>> json = await jsonStore.getListLike('messages-%');

    messages = json != null
        ? json.map((messageJson) => Message.fromJson(messageJson)).toList()
        : [];

}

Configure Android

In [project]/android/app/build.gradle set minSdkVersion to >= 18.

android {
    ...
    defaultConfig {
        ...
        minSdkVersion 18
        ...
    }
}
Thanks

Thanks to contributors

Categorias

Dependências

Lista de dependências 4 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.