Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev3.0.0

memoize

Retorna o resultado em cache da chamada da função quando as entradas não foram alteradas desde a invocação anterior.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
74,5 mil
Curtidas
33
Pontos Pub
130

Instalar pacote

flutter pub add memoize

Visão geral do pacote

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

O pacote memoize é uma utilidade do Dart que armazena em cache os resultados de chamadas de função com base em seus parâmetros de entrada. Quando uma função é invocada com os mesmos argumentos de uma chamada anterior, ela retorna o resultado armazenado em cache em vez de recalculá-lo, melhorando o desempenho de funções caras ou frequentemente chamadas. O pacote suporta todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux. O pacote é particularmente útil em aplicações reativas ou com estado, onde cálculos repetidos podem ser evitados. Ele se integra perfeitamente a projetos Flutter via pub.dev.

Casos de uso

  • Armazenando em cache cálculos caros
  • Otimizando o renderização da interface com entradas estáveis
  • Melhorando o desempenho na gestão de estado
  • Reduzindo chamadas de API redundantes
  • Melhorando a responsividade em aplicativos com grande volume de dados
  • Evitando cálculos repetidos em animações

Principais recursos

  • Cache automático com base na igualdade de entrada
  • Suporte para funções assíncronas e síncronas
  • Compatibilidade multiplataforma
  • Leve e fácil de integrar
  • Suporte embutido para tipos complexos por meio de comparadores personalizados
  • Mínimo boilerplate necessário

Indicado para

  • Desenvolvedores otimizando o desempenho em aplicativos Flutter
  • Gerenciamento de estado com recálculos frequentes
  • Aplicativos com lógica computacional pesada
  • Interfaces de usuário reativas que exigem atualizações rápidas
  • Equipes que usam padrões de programação funcional

Considerações

  • O uso de memória aumenta com o tamanho do cache
  • A invalidação do cache deve ser tratada manualmente, se necessário
  • Não adequado para funções com efeitos colaterais
  • Pode não funcionar bem com objetos de entrada mutáveis sem igualdade personalizada
  • O ganho de desempenho depende do custo da função e da frequência de invocação

README original

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

Memoize

memoize returns cached result of function call when inputs were not changed from previous invocation.

Warning

memoize_dart now supports dart 2.12.0 and null safety since 3.0.0 version.

For 2.0.0 we drop func as dependency. Because it archived and doesn't support dart2.

If you need dart-1.24.3 use 1.4.0 version

Examples

memo1, memo2, ... memo10 compare arguments with == operator:

import 'dart:math';
import 'package:memoize/memoize.dart';

void main() {
  var rect1 = new Rectangle<int>(0, 0, 10, 10);
  var rect2 = new Rectangle<int>(0, 0, 10, 10);

  var func = memo1((Rectangle<int> a) => a.width * a.height);

  print(func(rect1));
  print(func(rect2)); // cached result is returned
}

imemo1, imemo2, ... imemo10 compare arguments with identical function:

import 'dart:math';
import 'package:memoize/memoize.dart';

void main() {
  var rect1 = new Rectangle<int>(0, 0, 10, 10);
  var rect2 = new Rectangle<int>(0, 0, 10, 10);

  var func = imemo1((Rectangle<int> a) => a.width * a.height);

  print(func(rect1));
  print(func(rect1)); // cached - same object instance
  print(func(rect2)); // not cached - different object instance
}

memo0 caches result on first call and can be used as lazy cache:

import 'dart:math';
import 'package:memoize/memoize.dart';

void main() {
  var func = memo0(() => new Rectangle<int>(0, 0, 10, 10));

  print(func());
  print(func()); // cached - same object instance
}

Contributors

Categorias

Repositório-fonte

Projetos que usam este pacote