Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.0+5

easy_debounce_throttle

Um pacote do Flutter fácil de usar que fornece debounce e throttle com Stream e WidgetBuilder.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
6
Curtidas
5
Pontos Pub
160

Instalar pacote

flutter pub add easy_debounce_throttle

Visão geral do pacote

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

Um pacote leve do Flutter que simplifica a implementação de funcionalidades de debounce e throttle para streams e widgets. Ele fornece métodos intuitivos para atrasar ou limitar a execução de callbacks, melhorando o desempenho em cenários como entradas de busca ou validação de formulários em tempo real. O pacote se integra perfeitamente com Stream e WidgetBuilder, tornando-o fácil de usar no framework UI reativo do Flutter. Projetado para desenvolvedores que buscam lógica limpa e reutilizável sem código boilerplate.

Casos de uso

  • Manipulação de entrada de pesquisa em tempo real
  • Validação de campo de formulário com atrasos
  • Reduzindo a frequência de chamadas da API
  • Otimização do processamento de entrada do usuário
  • Limitação de eventos baseada em fluxo
  • Melhorar a responsividade da interface

Principais recursos

  • APIs simples de debounce e throttle
  • Integração de Stream
  • Suporte a WidgetBuilder
  • Boilerplate mínimo
  • Compatibilidade multiplataforma
  • Sintaxe limpa e legível

Indicado para

  • Desenvolvedores construindo formulários interativos
  • Aplicativos com entrada frequente do usuário
  • Componentes de interface do usuário críticos para desempenho
  • Iniciantes do Flutter aprendendo padrões reativos
  • Equipes que priorizam código mantido

Considerações

  • Não adequado para eventos de alta frequência e baixa latência
  • Requer conhecimento sobre Streams
  • Personalização limitada além do debounce e throttle básicos
  • Pode adicionar um pequeno sobrecusto para casos de uso simples
  • Melhor usado com operações assíncronas ou efeitos colaterais

README original

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

Easy Debounce Throttle

Platform Pub Package Build Status License: MIT


An easy-to-use flutter package that provides debounce and throttle with Stream and WidgetBuilder.

Usage

If you want to subscribe to debounce, throttle events with Stream, use EasyDebounce, EasyThrottle

you should call the close() method to avoid memory leak

EasyDebounce
 final EasyDebounce _easyDebounce = EasyDebounce(delay: const Duration(milliseconds: 1000));
 final TextEditingController _textController = TextEditingController();
 
 @override
 void initState() {
 super.initState();
 _textController.addListener(() {
   _easyDebounce.debounce(_textController.text);
 });
 _easyDebounce.listen((data) {
   setState(() {
     _debounceText = '$data';
   });
 });
 }
 
 @override
 void dispose() {
 _easyDebounce.close();
 super.dispose();
}
EasyThrottle
 final EasyThrottle _easyThrottle = EasyThrottle(delay: const Duration(milliseconds: 1000));
 final TextEditingController _textController = TextEditingController();
 
 @override
 void initState() {
 super.initState();
 _textController.addListener(() {
   _easyThrottle.throttle(_textController.text);
 });
 _easyThrottle.listen((data) {
   setState(() {
     _throttleText = '$data';
   });
 });
 }
 
 @override
 void dispose() {
 _easyThrottle.close();
 super.dispose();
 }

If you want to receive debounce and throttle events from methods such as onPressed callbacks with WidgetBuilder, use EasyDebounceBuilder and EasyThrottleBuilder.

EasyDebounceBuilder and EasyThrottleBuilder internally disposes the stream, so there is no need to call the close() method.

EasyDebounceBuilder
EasyDebounceBuilder(
    delay: const Duration(milliseconds: 1000),
    builder: (context, debounce) {
      return TextButton(
          onPressed: () => debounce(() => _increaseDebounceCount()),
       // onPressed: () {
       //   debounce(() {
       //     _increaseDebounceCount();
       //   });
       // },
          child: Text(
            'increase debounce count',
            style: kNotoSansBold14.copyWith(color: Colors.white),
          ));
    }),
EasyThrottleBuilder
EasyThrottleBuilder(
    delay: const Duration(milliseconds: 1000),
    builder: (context, throttle) {
      return TextButton(
          onPressed: () => throttle(() => _increaseThrottleCount()),
       // onPressed: () {
       //   throttle(() {
       //     _increaseThrottleCount();
       //   });
       // },
          child: Text(
            'increase throttle count',
            style: kNotoSansBold14.copyWith(color: Colors.white),
          ));
    }),

Examples

An example can be found in the example directory of this repository.

A list of detailed examples can be found in this Examples Repository

EasyDebounce EasyThrottle
EasyDebounceBuilder EasyThrottleBuilder

Installing

1. Depend on it

Add this to your package's pubspec.yaml file:

dependencies:
  easy_debounce_throttle: ^1.0.0

or

$ flutter pub add easy_debounce_throttle
2. Install it

You can install packages from the command line:

$ flutter pub get
3. Import it

Now in your Dart code, you can use:

import 'package:easy_debounce_throttle/easy_debounce_throttle.dart';

License

MIT License

Copyright (c) 2022 seosh817

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.