Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev2.2.0

simple_json_persistence

Armazenamento de dados do Flutter com base em arquivos JSON simples, com suporte a múltiplas instâncias de armazenamento, streams, etc.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
296
Curtidas
5
Pontos Pub
150

Instalar pacote

flutter pub add simple_json_persistence

Visão geral do pacote

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

Um pacote Flutter para persistência de dados simples baseada em JSON, permitindo o armazenamento de dados estruturados em arquivos JSON em múltiplas plataformas. Ele suporta múltiplas instâncias de armazenamento independentes, fluxos de dados em tempo real e integração perfeita com o modelo assíncrono do Dart. Ideal para aplicativos que precisam de armazenamento leve baseado em arquivos sem a complexidade de bancos de dados. O pacote foi projetado para facilitar o uso, com configuração mínima e APIs claras para leitura, escrita e escuta de alterações. É particularmente útil para aplicações pequenas a médias onde soluções completas de banco de dados são desnecessárias.

Casos de uso

  • Armazenando preferências do usuário
  • Salvando o estado do aplicativo entre sessões
  • Gerenciando arquivos de configuração locais
  • Persistência de pequenos conjuntos de dados
  • Habilitar acesso a dados offline

Principais recursos

  • Várias instâncias de armazenamento
  • Streaming de dados em tempo real
  • Suporte multiplataforma
  • API simples
  • Armazenamento JSON baseado em arquivos

Indicado para

  • Necessidades de armazenamento de dados leves
  • Prototipagem e pequenos aplicativos
  • Aplicações com foco em offline
  • Aplicativos evitando bancos de dados complexos

Considerações

  • Não adequado para grandes conjuntos de dados
  • Capacidades limitadas de consulta
  • Nenhuma criptografia embutida
  • O desempenho pode degradar com arquivos muito grandes

README original

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

simple_json_persistence

codecov Pub Cirrus CI - Base Branch Build Status

Flutter data storage based on simple json files. The main advantage to using for example the shared preference plugin is that:

  1. It is completely written in dart, so no communication with native ios/android code.
  2. It is possible to have multiple storages for different base types. While the shared preferences load the whole data into memory at once, this allows you to split it up into multiple json storage. (e.g. one small storage for app data/config which needs to be loaded on startup and a larger json storage with larger application data).

It is still not suitable for large datasets, since all data will be kept in memory and written into the json file at once, but it's a good middle ground between shared preferences and complicated database.

Getting Started

To make use of SimpleJsonPersistence you have to create your data models to serialize to and from json. I personally prefer to use built_value with it's serialization, or json_serializable.

Anyway, it is recommended that persistence models are immutable.

import 'package:simple_json_persistence/simple_json_persistence.dart';

@JsonSerializable(nullable: false)
class MyModel {
  MyModel({this.property,});

  factory MyModel.fromJson(Map<String, dynamic> json) =>
      _$MyModelFromJson(json);

  Map<String, dynamic> toJson() => _$MyModelToJson(this);

  final String property;
}

void doSomething() async {
  final store = SimpleJsonPersistence.forType(
    (json) => MyModel.fromJson(json),
    name = 'MyModel',
  );
  await store.save(MyModel(property: 'foo'));
  final foo = await store.load();

  // since every SimpleJsonPersistence for the same type/name is the same instance
  // you can also subscribe to changes.
  store.onValueChanged.listen((newValue) {
    print('got a new value $newValue');
  });
}

Usage in flutter (StreamBuilder)

See also the example application.

Widget build(BuildContext context) {
  final store = SimpleJsonPersistence.forType(
      (json) => AppData.fromJson(json),
      defaultCreator: () => AppData(counter: 0));
  return StreamBuilder<AppData>(
    stream: store.onValueChangedAndLoad,
    initialData: store.cachedValue,
    builder: (context, snapshot) => Text('Counter: ${snapshot.data?.counter ?? 'Loading'}'),
  );
}

Categorias

Dependências

Lista de dependências 8 itens

Repositório-fonte

Projetos que usam este pacote