stopou_blocker 0.7.2 copy "stopou_blocker: ^0.7.2" to clipboard
stopou_blocker: ^0.7.2 copied to clipboard

PlatformAndroid

Plugin do Stopou para bloqueio por VPN local (preparado para estratégias futuras).

🛡️ Stopou Blocker #

Plugin Flutter para bloqueio de conteúdo via VPN local e detecção de palavras-chave.

Versão: 0.1.2
Compatibilidade: Flutter 3.3.0+ | FlutterFlow ✅

🎯 Funcionalidades #

  • Bloqueio VPN: Filtragem DNS em tempo real via VPN local
  • Detecção Keywords: Alertas para palavras-chave via Accessibility Service
  • Status em Tempo Real: APIs para verificar permissões e estado dos serviços
  • Overlays Customizáveis: Modais personalizáveis para alertas
  • Recovery Automático: Sistema robusto com retry e health checks
  • FlutterFlow Ready: APIs otimizadas para desenvolvimento visual

🚀 Instalação #

dependencies:
  stopou_blocker: ^0.1.2
flutter pub get

📋 Uso Básico #

1. Verificar e Solicitar Permissões #

// Verificar status das permissões
final hasVpnPermission = await StopouBlocker.hasVpnPermission();
final hasAccessibilityPermission = await StopouBlocker.hasAccessibilityPermission();

// Solicitar permissões se necessário
if (!hasVpnPermission) {
  await StopouBlocker.requestPermission();
}

if (!hasAccessibilityPermission) {
  await StopouBlocker.requestAccessibilityPermission();
}

2. Iniciar Bloqueio VPN #

await StopouBlocker.start(
  blocklist: ['.bet.br', 'exemplo.com'],
  logAttempts: true,
  dnsServers: ['1.1.1.1', '8.8.8.8'],
  strategies: [BlockStrategies.vpn],
);

3. Configurar Bloqueio de Keywords #

await StopouBlocker.startKeywordBlocker([
  'bet',
  'casino', 
  'apostas',
]);

4. Monitorar Status #

// Verificar se serviços estão rodando
final vpnRunning = await StopouBlocker.isVpnRunning();
final keywordBlockerRunning = await StopouBlocker.isKeywordBlockerRunning();

// Escutar eventos em tempo real
StopouBlocker.events.listen((event) {
  print('Evento: ${event['status']}');
  if (event['type'] == 'keyword_alert') {
    print('Palavra detectada: ${event['message']}');
  }
});

🎛️ API Completa #

Método Descrição Retorno
hasVpnPermission() Verifica permissão VPN Future<bool>
hasAccessibilityPermission() Verifica permissão acessibilidade Future<bool>
hasNotificationPermission() Verifica permissão notificação Future<bool>
isVpnRunning() Status do serviço VPN Future<bool>
isKeywordBlockerRunning() Status do bloqueador keywords Future<bool>
start() Inicia bloqueio VPN Future<void>
stop() Para todos os serviços Future<void>
startKeywordBlocker() Inicia detecção keywords Future<List<String>>
stopKeywordBlocker() Para detecção keywords Future<void>
events Stream de eventos Stream<BlockEvent>

🏗️ Melhorias v0.1.2 #

📖 Ver documentação completa das melhorias

Principais Adições: #

  • 6 novos métodos de verificação de status
  • Overlay customizável para alertas (substitui Toast)
  • Accessibility Service otimizado (-80% eventos processados)
  • VPN com retry automático e health checks
  • Cache persistente de keywords
  • Testes unitários expandidos
  • App exemplo completamente redesenhado

🔧 Configuração Android #

Permissões (Automáticas) #

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

Configuração Proguard #

Adicione ao android/app/proguard-rules.pro:

-keep class app.stopou.stopou_blocker.** { *; }

🧪 Exemplo de Uso Completo #

Veja o app de exemplo para uma implementação completa com:

  • Dashboard de status em tempo real
  • Gestão inteligente de permissões
  • Controles adaptativos baseados no estado
  • Log de eventos detalhado

📱 Compatibilidade FlutterFlow #

O plugin foi otimizado para FlutterFlow com:

  • ✅ APIs síncronas para verificação de estado
  • ✅ Widgets condicionais baseados em permissões
  • ✅ Event listeners para atualizações em tempo real
  • ✅ Tratamento robusto de erros

Exemplo FlutterFlow: #

// Use em Actions do FlutterFlow
if (await StopouBlocker.hasVpnPermission()) {
  // Mostrar botão "Iniciar VPN"
} else {
  // Mostrar botão "Configurar Permissões"
}

🐛 Troubleshooting #

VPN não inicia #

  1. Verificar permissão: await StopouBlocker.hasVpnPermission()
  2. Ver eventos: StopouBlocker.events.listen()
  3. Verificar logs no console

Keywords não detectadas #

  1. Habilitar acessibilidade: await StopouBlocker.requestAccessibilityPermission()
  2. Verificar status: await StopouBlocker.isKeywordBlockerRunning()
  3. Testar com keywords simples primeiro

Performance Issues #

  • Use hasVpnPermission() em vez de tentar iniciar VPN
  • Limite keywords a 10-20 termos
  • Evite polling frequente de status

🤝 Contribuição #

  1. Fork o projeto
  2. Crie feature branch: git checkout -b feature/nova-funcionalidade
  3. Commit: git commit -m 'Adiciona nova funcionalidade'
  4. Push: git push origin feature/nova-funcionalidade
  5. Abra Pull Request

📄 Licença #

Este projeto está sob licença MIT. Veja LICENSE para detalhes.

🆘 Suporte #

0
likes
140
points
45
downloads

Publisher

unverified uploader

Weekly Downloads

Plugin do Stopou para bloqueio por VPN local (preparado para estratégias futuras).

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on stopou_blocker

Packages that implement stopou_blocker