Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.2

use_optimistic

Um hook fácil de usar para atualizar otimisticamente um estado genérico e depois resolvê-lo posteriormente de forma assíncrona por meio de `accept`, `acceptAs` ou `reject`.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
10
Curtidas
5
Pontos Pub
160

Instalar pacote

flutter pub add use_optimistic

Visão geral do pacote

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

Um pacote Flutter/Dart que fornece um hook simples para atualizar o estado de forma otimista. Permite aos desenvolvedores refletir imediatamente as mudanças na interface, depois resolvê-las assincronamente usando os métodos accept, acceptAs ou reject. Ideal para cenários como envio de formulários, alternância de estados ou qualquer ação onde uma resposta imediata melhora a experiência do usuário antes da confirmação do servidor. O hook gerencia transições de estado de forma suave e oferece suporte a múltiplas plataformas.

Casos de uso

  • Atualizações em tempo real do formulário
  • Alternar ações com feedback imediato
  • Operações assíncronas com UI otimista
  • Envio de dados com capacidade de rollback
  • Simulações de interação do usuário

Principais recursos

  • Atualizações de estado otimistas
  • Suporte para accept/acceptAs/reject
  • API simples com pouco código boilerplate
  • Compatibilidade multiplataforma
  • Gerenciamento de estado embutido
  • Integração fácil com ganchos existentes

Indicado para

  • Desenvolvedores procurando feedback de interface instantâneo
  • Projetos que exigem alterações temporárias no estado
  • Aplicativos com interações assíncronas frequentes
  • Equipes priorizando a responsividade da UX
  • Aplicativos Flutter usando widgets funcionais

Considerações

  • Requer entendimento sobre manipulação de estado assíncrono
  • Não adequado para dados críticos sem alternativas
  • Necessita de tratamento adequado de erros ao rejeitar
  • Melhor usado com mecanismos claros de feedback do usuário
  • Pode exigir lógica adicional para fluxos de trabalho complexos

README original

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

Flutter hook: useOptimistic 🪝

An easy-to-use hook to optimistically update generic state and then resolve it later (async or sync) by accept, acceptAs, or reject-ing.


Documentation
  • Full example of using this hook to manage integer state.
  • GitHub repo found here.
  • Package found here.

Documentation is largely found in the package itself via doc-comments (i.e. hover over package functions in your editor and it'll tell you what they do). First, however, view the above full example to get started.

Simple usage

demo image

Initialize the hook:

  final UseOptimistic<int> useOptimistic = UseOptimistic<int>(initialState: 0)

Ensure your widget listens to its state changes:

@override
void initState() {
  super.initState();
  useOptimistic.addListener(() => setState(() => debugPrint("state changed to: ${useOptimistic.state}")));
}

Ensure the hook will be disposed when your widget is:

@override
void dispose() {
  super.dispose();
  useOptimistic.dispose();
}

Update your state optimistically:

TextButton(
  onPressed: () async {

    Resolver r = useOptimistic.fn(
      1, // the [newValue] to be passed to functions below
      todo: (currentState, newValue) => currentState + newValue,
      undo: (currentState, oldValue) => currentState - oldValue,
    );

    // simulating an API call
    await Future.delayed(const Duration(seconds: 1));

    // three mutually exclusive ways to deal with result
    r.acceptAs(2); // [undo] original function, then [todo] with new value
    r.accept(); // accept the original optimistic update
    r.reject(); // reject the original optimistic update and [undo] original function

  },
  child: const Text("optimistically add 1"),
),

You can call useOptimistic.fn( ... ) multiple times with different todo and undo functions and it'll execute the proper todo/undo associated with fn at the moment you called it. This means you can call multiple separate useOptimistic.fn( ... )s safely together. It does not mean you can have a single fn like this (pseudo-code): useOptimistic.fn( if x todo: () => {...} else todo: () => {...} ) that has conditionally rendered todo/undo functions.

Listen to the state:

Text("current value: ${useOptimistic.state}"),
Extra
  • The package is always open to improvements, [suggestions](mailto:me@matthewtrent.me), and additions!
  • I'll look through GitHub PRs and Issues as soon as I can.

analytics

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.