widget_pulse 0.1.0-alpha.5
widget_pulse: ^0.1.0-alpha.5 copied to clipboard
Visualize Flutter widget rebuilds in real time.
Widget Pulse #
Visualize Flutter widget rebuilds in real time.
O Widget Pulse é uma biblioteca open-source de developer tooling para Flutter focada em runtime visual instrumentation e profiling visual de rebuilds.
A proposta da biblioteca é ajudar desenvolvedores Flutter a identificar:
- rebuilds excessivos
- gargalos de renderização
- widgets com alto custo de reconstrução
- problemas de performance durante desenvolvimento
Tudo isso através de overlays visuais, métricas em tempo real e ferramentas leves de observabilidade visual.
✨ Features #
✅ Disponível no MVP #
- ✅ Rastreamento de rebuilds em tempo real
- ✅ Contador de rebuilds por widget
- ✅ Overlay visual de debug
- ✅ Arquitetura leve e extensível
- ✅ Integração plug-and-play
- ✅ Baixo impacto em performance
- ✅ Developer Experience focada em simplicidade
📸 Preview #
Overlay de Rebuilds #

🚀 Instalação #
Adicione no seu pubspec.yaml:
dependencies:
widget_pulse: ^0.1.0-alpha.1
Depois execute:
flutter pub get
⚡ Quick Start #
Envolva sua aplicação com WidgetPulse.
import 'package:flutter/material.dart';
import 'package:widget_pulse/widget_pulse.dart';
void main() {
runApp(
WidgetPulse(
child: MyApp(),
),
);
}
🧩 Uso Básico #
Rastreando um Widget #
TrackedWidget(
name: 'CounterWidget',
child: CounterWidget(),
)
📚 Exemplo Completo #
import 'package:flutter/material.dart';
import 'package:widget_pulse/widget_pulse.dart';
void main() {
runApp(
WidgetPulse(
child: MyApp(),
),
);
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int counter = 0;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Widget Pulse Example'),
),
body: Center(
child: TrackedWidget(
name: 'CounterText',
child: Text(
'$counter',
style: const TextStyle(fontSize: 40),
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
counter++;
});
},
child: const Icon(Icons.add),
),
),
);
}
}
🔍 Como Funciona #
O Widget Pulse intercepta ciclos de rebuild através de wrappers leves aplicados nos widgets rastreados.
Sempre que o Flutter executa:
build()
o Widget Pulse:
- registra métricas de rebuild
- contabiliza frequência de reconstruções
- disponibiliza informações visuais via overlays
- ajuda a identificar widgets problemáticos
Tudo isso sem necessidade de configuração complexa.
🏗️ Arquitetura Inicial #
widget_pulse/
│
├── core/
│ ├── widget_pulse.dart
│ ├── pulse_config.dart
│ └── pulse_controller.dart
│
├── tracking/
│ ├── rebuild_tracker.dart
│ ├── rebuild_metrics.dart
│ └── tracked_element.dart
│
├── overlay/
│ ├── overlay_manager.dart
│ ├── overlay_entry.dart
│ └── debug_overlay.dart
│
├── metrics/
│ ├── metrics_store.dart
│ ├── metrics_snapshot.dart
│ └── metrics_exporter.dart
│
├── widgets/
│ ├── tracked_widget.dart
│ ├── rebuild_badge.dart
│ └── pulse_overlay.dart
│
└── utils/
├── logger.dart
└── throttle.dart
🧠 Filosofia do Projeto #
O Widget Pulse foi criado com alguns princípios centrais:
- Ferramenta visual e intuitiva
- Zero configuração complexa
- Fácil adoção em projetos existentes
- Arquitetura extensível
- Impacto mínimo em runtime
- Developer Experience em primeiro lugar
A ideia é permitir que qualquer desenvolvedor consiga visualizar problemas de rebuild de forma rápida, prática e visual.
🎯 Objetivo do Projeto #
Grande parte dos problemas de performance em Flutter vêm de rebuilds excessivos e desnecessários.
O Widget Pulse existe para tornar esses problemas:
- Visíveis
- Mensuráveis
- Fáceis de diagnosticar
Sem necessidade de ferramentas pesadas ou configuração complexa.
🛣️ Roadmap #
🔹 V0.2 #
- Heatmap visual de rebuilds
- Intensidade de rebuild
- Indicadores visuais por frequência
- Overlay inteligente
🔹 V0.3 #
- Análise por frame
- Detecção de widgets lentos
- Métricas de performance
- Snapshot de rebuilds
🔹 V1.0 #
- Integração com Flutter DevTools
- Timeline visual
- Inspeção de árvore de widgets
- Histórico de rebuilds
- Exportação de métricas
- Performance heatmaps
🧪 Desenvolvimento Local #
Clone o projeto:
git clone https://github.com/Devluizpozza/widget_pulse.git
Entre na pasta:
cd widget_pulse
Instale as dependências:
flutter pub get
Execute os testes:
flutter test
✅ Qualidade de Código #
O projeto utiliza:
flutter analyzedart format- testes automatizados
- linting
- CI/CD via GitHub Actions
🔄 CI/CD #
O Widget Pulse utiliza GitHub Actions para integração contínua e validação automática de qualidade.
Pipeline de CI #
Executado em:
- Pull Requests
- Push para
main - Push para
develop
Verificações Automatizadas #
- Validação de formatação
- Análise estática
- Execução de testes
- Validação de build
Workflow #
name: CI
on:
pull_request:
push:
branches:
- main
- develop
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: stable
- run: flutter pub get
- run: dart format --set-exit-if-changed .
- run: flutter analyze
- run: flutter test
🤝 Contribuindo #
Contribuições são muito bem-vindas.
Você pode contribuir com:
- correções
- melhorias de performance
- novas features
- documentação
- exemplos
- feedbacks
Como contribuir #
-
Faça um fork do projeto
-
Crie uma branch:
git checkout -b feature/minha-feature
-
Commit suas alterações
-
Abra um Pull Request
📌 Status do Projeto #
🚧 Em desenvolvimento ativo.
Atualmente o Widget Pulse encontra-se em fase alpha com foco na estabilização do sistema de tracking visual e observabilidade de rebuilds.
📄 Licença #
MIT License
⭐ Apoie o Projeto #
Se o Widget Pulse te ajudar de alguma forma:
- deixe uma ⭐ no repositório
- compartilhe feedbacks
- abra issues
- contribua com melhorias
Open-source cresce com comunidade 🚀