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

PlatformAndroid

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

0.7.1 CORREÇÃO FILTRO + COMPATIBILIDADE TOTAL #

🔧 CORREÇÃO CRÍTICA: #

  • Filtro funcionando - corrigido problema que retornava "0 aplicativos"
  • Campo 'label' restaurado - sem breaking changes para FlutterFlow
  • Fallback inteligente - usa packageName se label vazio
  • Filtro FLAGS oficial - baseado em FLAGS do Android

🎯 FILTRO APRIMORADO: #

  • Incluir: Apps usuário (sem FLAG_SYSTEM)
  • Incluir: Apps sistema atualizados (FLAG_UPDATED_SYSTEM_APP)
  • Excluir: Apps sistema originais (só FLAG_SYSTEM)
  • Excluir: Próprio app (sptou.app)

📱 ESTRUTURA COMPATÍVEL: #

{
  "label": "WhatsApp",  // ou packageName se vazio
  "packageName": "com.whatsapp",
  "icon": "data:image/png;base64,..."
}

🧹 CÓDIGO LIMPO: #

  • 🗑️ Removido: 90+ linhas de listas hardcoded
  • Simplificado: Lógica baseada apenas em FLAGS
  • 🚀 Performance: Filtro mais eficiente
  • 📊 Confiável: Critério oficial do Android

COMPATIBILIDADE GARANTIDA: #

  • 🔗 Campo 'label' - FlutterFlow funciona sem mudanças
  • 📱 Apps relevantes - Play Store, Gmail, YouTube incluídos
  • 🛡️ Zero breaking changes - código existente mantido
  • 🎯 Resultado esperado - 20-60 apps úteis

🔄 MIGRAÇÃO: #

// FUNCIONA DIRETO - sem mudanças necessárias:
final apps = await StopouBlocker.getInstalledApps();
final label = app['label'];           // ✅ Mantido
final packageName = app['packageName']; // ✅ Mantido  
final icon = app['icon'];             // ✅ Mantido

0.7.0 APPS DO USUÁRIO + BREAKING CHANGES #

🎯 FOCO EXCLUSIVO EM APLICATIVOS DO USUÁRIO #

  • Apenas apps com launcher - queryIntentActivities() com ACTION_MAIN + CATEGORY_LAUNCHER
  • 🚫 Exclui apps do sistema - filtro (flags & FLAG_SYSTEM) != 0
  • 🔒 Exclui o próprio app - filtro packageName == context.packageName
  • 📱 Resultado otimizado - de 100-300+ apps para ~15-50 apps relevantes

🔄 NOVA ESTRUTURA DE RETORNO #

{
  "appName": "WhatsApp",
  "packageName": "com.whatsapp",
  "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}

🎨 ÍCONES COM PREFIXO DATA:IMAGE #

  • 🔗 Prefixo completo - data:image/png;base64, para compatibilidade web
  • 📄 PNG 100% - qualidade máxima para ícones
  • 🌐 Web-ready - pode ser usado diretamente em <img src="..." />
  • FlutterFlow friendly - suporte nativo para data URLs

📊 MELHORIAS DE PERFORMANCE #

  • 🚀 Menos apps processados - apenas os relevantes
  • 🔍 Busca otimizada - queryIntentActivities() mais eficiente
  • 📝 Logs informativos - debug de filtros aplicados
  • 🔤 Ordenação por appName - alfabética para UX

🛡️ ROBUSTEZ MANTIDA #

  • Try-catch granular - por app e por ícone
  • 🔄 Processamento contínuo - não para com erros
  • 📋 Compatibilidade API - List<Map<String, dynamic>> mantida
  • Testes passando - 26 testes validados

⚠️ BREAKING CHANGES #

  1. Campos renomeados:

    • labelappName
    • iconBase64icon
  2. Formato de ícone alterado:

    • Antes: Base64 simples
    • Depois: data:image/png;base64,{base64}
  3. Quantidade drasticamente reduzida:

    • Antes: Todos os apps instalados
    • Depois: Apenas apps do usuário com launcher

🎯 MIGRAÇÃO #

// ANTES (v0.6.1)
final label = app['label'];
final icon = app['iconBase64']; // Base64 simples

// DEPOIS (v0.7.0)
final appName = app['appName'];
final icon = app['icon']; // data:image/png;base64,{base64}

0.6.1 JSON LIMPO + ÍCONES OTIMIZADOS #

🧹 JSON ESTRUTURADO PARA FLUTTERFLOW #

  • Objeto limpo: {"label": "...", "packageName": "...", "iconBase64": "..." ou null}
  • 🎯 Campos consistentes - estrutura previsível para FlutterFlow
  • 🔗 Parsing otimizado - sem concatenação indevida de dados
  • 📋 Formato documentado - especificação clara dos campos

🎨 CONVERSÃO ROBUSTA DE ÍCONES #

  • 🔧 BitmapDrawable → bitmap - extração direta quando possível
  • 🖼️ Fallback inteligente - conversão para outros tipos de Drawable
  • 📐 Dimensões padrão - 64x64 para ícones sem tamanho intrínseco
  • 🗜️ Base64.NO_WRAP - sem quebras de linha indevidas
  • 💾 Compressão PNG 90% - qualidade vs tamanho otimizado
  • 🛡️ Null safety - retorna null em vez de quebrar

📱 MELHORIAS DE API #

  • 🔍 packageManager.getInstalledApplications(GET_META_DATA) - TODOS os apps
  • 🏷️ appInfo.loadLabel() - labels limpos e corretos
  • 📦 appInfo.packageName - identificadores precisos
  • 📊 Logs detalhados - "📱 [GET_APPS] ✅ $label ($packageName)"
  • 🔢 Contagem final - total de apps processados

🛡️ ROBUSTEZ APRIMORADA #

  • Try-catch granular - por app e por ícone
  • 🔄 Processamento contínuo - não para com erros individuais
  • 📝 Logs informativos - erros específicos sem spam
  • 🔤 Ordenação alfabética - por label para UX melhor

COMPATIBILIDADE TOTAL #

  • 🔗 API inalterada - List<Map<String, dynamic>>
  • 🧪 26 testes passando - regressões zero
  • 🏗️ Build Android OK - compilação perfeita
  • 📱 FlutterFlow ready - JSON parsing otimizado

0.6.0 BLOQUEIO DE APLICATIVOS + ROBUSTEZ API #

🚫 NOVA FUNCIONALIDADE: BLOQUEIO DE APLICATIVOS #

  • startAppBlocker(List - Bloqueia aplicativos específicos
  • stopAppBlocker() - Para o bloqueio de todos os aplicativos
  • 🎯 MONITORAMENTO REAL-TIME - Detecta tentativas de abertura via AccessibilityService
  • 🔐 FECHAMENTO AUTOMÁTICO - Fecha app bloqueado e mostra tela de bloqueio
  • 🌊 EVENT STREAMING - Emite eventos no stream para logging
  • 💾 RUNTIME ONLY - Lista de apps em memória (sem persistência)

🛡️ ROBUSTEZ E PROTEÇÃO DA API #

  • 🔒 CONTRATO GARANTIDO - getInstalledApps() nunca quebra, mesmo com dados problemáticos
  • 🚨 EXCEPTION SAFE - Fallback para lista vazia em caso de erro
  • 🧹 FILTRAGEM AUTOMÁTICA - Remove apps inválidos mas mantém válidos
  • NULL SAFETY - Proteção total contra null do nativo
  • 📱 FLUTTERFLOW BULLETPROOF - 100% compatibilidade garantida

⚡ CUSTOM ACTIONS PARA FLUTTERFLOW #

  • 🚫 startAppBlockerAction(packages) - Inicia bloqueio com validações
  • stopAppBlockerAction() - Para bloqueio com logs
  • 🧪 testAppBlockerAction() - Teste completo do sistema
  • 🎯 DEMO ACTIONS - startAppBlockerDemo(), stopAppBlockerDemo()

🧪 TESTES DE ROBUSTEZ #

  • 26 TESTES PASSANDO - Incluindo edge cases extremos
  • 🛡️ PROTEÇÃO TESTADA - Dados problemáticos, null, exceções
  • 📋 CONTRATO VALIDADO - Sempre List<Map<String, dynamic>>
  • 🔍 FILTRAGEM TESTADA - Apps inválidos removidos corretamente

🎯 EXEMPLO ATUALIZADO #

  • 🧪 NOVOS BOTÕES DE TESTE - Para todas as funcionalidades
  • 📱 DEMO INTERATIVO - Teste de bloqueio do Chrome
  • 📊 LOGS DETALHADOS - Feedback completo das operações

🔧 ARQUITETURA #

  • 📦 AppBlockerManager - Gerenciamento centralizado em Kotlin
  • 🔗 KeywordBlockerService Integration - Detecção via AccessibilityEvent
  • 🎯 Fallback Strategy - Overlay quando Activity falha
  • 📡 Event System - Integração com stream existente

0.5.0 COMPATIBILIDADE FLUTTERFLOW COMPLETA + LISTA APPS #

📱 NOVA FUNCIONALIDADE: APLICATIVOS INSTALADOS #

  • getInstalledApps() - Lista todos os aplicativos instalados no dispositivo
  • 🎯 FORMATO JSON PURO - Retorna List<Map<String, dynamic>> compatível com FlutterFlow
  • 📦 DADOS COMPLETOS - label, packageName, iconBase64 (opcional)
  • CUSTOM ACTION - getInstalledAppsForFlutterFlow() para FlutterFlow
  • 🧪 TESTES INCLUÍDOS - testInstalledApps() para validação completa

🔧 OTIMIZAÇÕES DE API #

  • 🗑️ SIMPLIFICAÇÃO - Removida classe InstalledApp (incompatível FlutterFlow)
  • 🎯 ÚNICO MÉTODO - Apenas getInstalledApps() retornando JSON puro
  • 📱 FLUTTERFLOW READY - 100% compatível com Local State JSON
  • ANDROID TESTADO - PackageManager + launcher apps + ícones Base64

📋 ESTRUTURA RETORNADA #

[
  {
    "label": "YouTube",
    "packageName": "com.google.android.youtube", 
    "iconBase64": "iVBORw0KGgoAAAANSUhEUgA..." // ou null
  }
]

0.4.1 API SIMPLIFICADA E MÉTODOS SEPARADOS #

  • 🔐 PERMISSÕES SEPARADAS - Métodos individuais requestVpnPermission() e requestAccessibilityPermission()
  • 🌐 VPN INDIVIDUAL - startBlockerVpn(), stopBlockerVpn(), isVpnActive() para controle específico
  • 🔍 KEYWORDS INDIVIDUAL - startBlockerKeywords(), stopBlockerKeywords(), isKeywordActive()
  • 🛑 CONTROLE GRANULAR - stopAllBlockers() para parar tudo ou métodos individuais
  • API LIMPA - Removido professionalSolution() (nome ruim), agora métodos diretos
  • 📱 FLUTTERFLOW FRIENDLY - Cada função tem responsabilidade única e clara
  • 🧪 DEBUG MANTIDO - diagnosticCompleteSystem(), emergencyStop(), repairSystem()
  • 🔄 COMPATIBILIDADE - Métodos antigos redirecionam para novos (sem breaking changes)
  • 📊 LOGS ESTRUTURADOS - [VPN], [KEYWORDS], [PERMISSION] para debug claro
  • BUILD VALIDADO - Testado debug, release, testes unitários e pub publish

0.4.0 SOLUÇÃO PROFISSIONAL COMPLETA #

  • 🎯 SOLUÇÃO PROFISSIONAL - Método professionalSolution() com estratégia dual completa
  • 🔍 KEYWORDS MÚLTIPLAS ESTRATÉGIAS - Detecção robusta em navegadores com 3 métodos
  • 🌐 VPN ULTRA-MÍNIMA - DNS-only VPN que não interfere com conectividade normal
  • 🧪 DIAGNÓSTICO COMPLETO - diagnosticCompleteSystem() para análise total do sistema
  • 🔧 SISTEMA DE REPARO - repairSystem() para correção automática de problemas
  • 📊 TESTES ESPECÍFICOS - Métodos isolados para testar VPN, keywords e navegadores
  • 🚨 GESTÃO DE EMERGÊNCIA - emergencyStop() e fullRestart() para situações críticas
  • 📱 CONFIGURAÇÕES FLEXÍVEIS - startKeywordsOnly(), startVpnOnly() para testes
  • 🌳 LOGS ESTRUTURADOS - Sistema completo de logs com prefixos para debug
  • 📖 INSTRUÇÕES COMPLETAS - getDebugInstructions() com todos os comandos necessários

0.3.9 #

  • 🌐 VPN CONECTIVIDADE FIX - Resolução definitiva do problema de internet bloqueada
  • DNS-ONLY VPN - Configuração ultra-minimalista que só intercepta DNS
  • 🎯 ZERO ROTAS WEB - Removido addRoute() para CDNs e ranges IP que causavam bloqueio total
  • 🔧 VPN PASSIVA - Sistema configura apenas 10.0.0.2/32 como DNS interceptor
  • 🧪 TESTE CONECTIVIDADE - Novo método testVpnConnectivity() para validar funcionamento
  • INTERNET NORMAL - Sites normais (google.com, youtube.com) devem funcionar
  • BLOQUEIO .bet.br - Apenas domínios .bet/.bet.br são bloqueados via DNS
  • 📊 LOGS ESTRUTURADOS - Logs 🔧 para VPN config e 🌐 para DNS processing

0.3.8 #

  • 🔧 HOTFIX CRÍTICO - Corrigidos erros de compilação Kotlin na v0.3.7
  • OVERLAY CALLS - Parâmetros corretos para AccessibilityOverlay.show() e BlockerOverlay.show()
  • NULLABILITY - Correção de String? vs String em packageName (linhas 579, 600)
  • 🚨 BUILD FIX - Todos os erros de compilação resolvidos

0.3.7 #

  • 🌐 DETECÇÃO EM NAVEGADORES - Implementação específica para Chrome, Samsung Internet, Firefox, etc.
  • 🌳 DEBUG TREE LOGGER - Helper logNodeTree() para debug da árvore de acessibilidade
  • 🔍 EXTRAÇÃO URL/TÍTULO - Detecta keywords na URL bar e título da página em navegadores
  • 🎯 ESTRATÉGIA NAVEGADOR - Fallback inteligente quando conteúdo da página não é acessível
  • 🧪 testBrowserDetection() - Método para testar detecção em navegadores
  • 📊 BROWSER INFO CLASS - Estrutura para armazenar URL, título e textos de navegadores
  • 🔗 SUPORTE MÚLTIPLOS NAVEGADORES - Chrome, Samsung Internet, Firefox, Opera, Edge, Brave
  • 📖 DOCUMENTAÇÃO NAVEGADORES - Arquivo NAVEGADORES_DEBUG.md com guia completo
  • 🔍 LOGS ESTRUTURADOS - Prefixos específicos 🌐 [BROWSER_DETECTION] para fácil filtragem

0.3.6 #

  • 🎯 BLOQUEIO INTELIGENTE POR SUFIXO - Agora bloqueia apenas domínios que TERMINAM com .bet, .bet.br
  • PRECISÃO MELHORADA - firebase.googleapis.com agora PASSA, cassino.bet.br é BLOQUEADO
  • 🛡️ ALLOWLIST AUTOMÁTICA - Domínios críticos (googleapis.com, firebaseio.com, etc.) sempre permitidos
  • 🧠 HELPER matchesDomainSuffix() - Função inteligente com logs detalhados de qual regra bateu
  • 🔧 MÉTODO updateAllowlist() - Permite atualizar domínios sempre permitidos
  • 🚀 ACTIONS PARA FLUTTERFLOW - startVpnBlockingWithSuffixes() e testSuffixBlocking()
  • 📖 DOCUMENTAÇÃO COMPLETA - Arquivo SUFIXOS_EXEMPLO.md com guia detalhado
  • 🚨 STOP APRIMORADO - stopVpn() com aguardo de threads e limpeza forçada
  • EMERGENCY STOP - emergencyStop() com múltiplas tentativas para casos críticos

0.3.5 #

  • 🔧 HOTFIX CRÍTICO - Corrigido erro de compilação Kotlin "Smart cast is impossible"
  • BUILD CORRIGIDO - Problema com propriedade mutable redirectRoute resolvido
  • 🎯 THREAD SAFETY - Captura valor local da redirectRoute para evitar concorrência

0.3.4 #

  • 🔍 SISTEMA DE LOGS ULTRA DETALHADO - Prefixo 🔍 em todos os logs para filtragem fácil
  • 📊 LOGS ESTRUTURADOS POR COMPONENTE - [PLUGIN], [ACCESSIBILITY], [KEYWORD_CHECK], [VPN_START], etc.
  • 🧪 MÉTODO DE TESTE INTEGRADO - testKeywordDetection() para debug completo no FlutterFlow
  • 📋 DEBUG CONFIG MÉTODO - debugCurrentConfig() mostra estado atual completo
  • 📖 INSTRUÇÕES DE DEBUG - getDebugInstructions() com comandos logcat prontos
  • 🔍 KEYWORD CHECK PALAVRA POR PALAVRA - Log detalhado de cada verificação
  • 📱 VPN START/STOP COMPLETO - Log de cada etapa do processo
  • 🎯 EXTRACTION LOGS - Rastreamento completo da extração de texto
  • ACCESSIBILITY EVENTS - Log detalhado de todos os eventos processados
  • 🚀 MÉTODOS PARA FLUTTERFLOW - Actions prontas para teste e debug

0.3.3 #

  • 🚨 LOGS DE DEBUG COMPLETOS - Sistema de logs detalhados para diagnosticar pop-ups não aparecendo
  • 🔧 POP-UPS CORRIGIDOS - BlockerOverlay e AccessibilityOverlay com fallbacks múltiplos
  • 🌐 VPN INTERNET CORRIGIDA - Problema crítico: VPN bloqueava toda internet resolvido
  • ROTAS VPN INTELIGENTES - Tenta rotas DNS específicas antes de capturar todo tráfego
  • 🔄 DUAL OVERLAY SYSTEM - AccessibilityOverlay + BlockerOverlay chamados simultaneamente
  • 📱 LOGS ESTRUTURADOS - Prefixos 🚨 [Component] para facilitar debug via logcat
  • REENCAMINHAMENTO DNS - Pacotes não-DNS agora são reencaminhados corretamente
  • 🎯 PROBLEMA IDENTIFICADO - VPN anterior descartava pacotes TCP/HTTP causando perda de conexão

0.3.2 #

  • ⚖️ THROTTLING BALANCEADO - Ajustado de 1s para 3s (reduz spam de logs)
  • 🌐 DETECÇÃO EM NAVEGADORES - Removidos apps ignorados desnecessários
  • CHROME DESBLOQUEADO - Agora detecta keywords em resultados de busca
  • 🎯 LISTA FOCADA - Apps ignorados reduzidos para apenas essenciais (sistema, teclados)
  • 📊 MENOS RUÍDO - Throttling otimizado para melhor performance

0.3.1 #

  • 🐛 CORREÇÃO CRÍTICA DE DETECÇÃO - Debug mode ativado por padrão
  • RESPONSIVIDADE MELHORADA - Throttling reduzido de 5s para 1s
  • 📊 LOGS CRÍTICOS SEMPRE VISÍVEIS - Logs de detecção aparecem mesmo sem debug
  • 🔍 MELHOR DIAGNÓSTICO - Logs detalhados para identificar problemas de detecção
  • CORREÇÃO: Finalmente detecta keywords em sites de apostas corretamente

0.3.0 #

  • 🎯 MAJOR RELEASE - Revisão completa do sistema de detecção
  • 🧠 DETECÇÃO SUPER INTELIGENTE - Lógica expandida com contextos seguros vs suspeitos
  • PERFORMANCE OTIMIZADA - Throttling aumentado (5s), cooldown aumentado (15s)
  • 🔇 MODO DEBUG - Logs verbosos apenas em modo debug, produção limpa
  • 🚫 FILTROS EXPANDIDOS - Lista completa de apps ignorados (teclados, configurações, etc)
  • 🎛️ EXTRAÇÃO OTIMIZADA - Só extrai texto da tela quando necessário (<50 chars)
  • 🛡️ CONTEXTOS SEGUROS - Ignora "excluir bet", "bet do histórico", "configurações"
  • 🚨 CONTEXTOS SUSPEITOS - Detecta "bet online grátis", "ganhe dinheiro bet"
  • 🧹 MENOS RUÍDO - Redução drástica de logs desnecessários
  • STOP COMPLETO - stopKeywordBlocker para 100% o processamento

0.2.9 #

  • 🛠️ CORREÇÃO CRÍTICA - stopKeywordBlocker agora para completamente o processamento de eventos
  • Flag isActive - Serviço para de processar quando não há keywords ativas
  • 🔇 Sem spam após stop - Zero logs desnecessários quando o serviço está parado
  • 🧪 Detecção testada - Confirmado funcionamento correto com palavras reais (bet, 1xbet, aposta)
  • 🎯 Rota confirmada - RedirectRoute /BlocksPopUp funcionando perfeitamente

0.2.8 #

  • OTIMIZAÇÃO DE PERFORMANCE - Lista expandida de apps ignorados para reduzir processamento
  • 🚫 Filtros adicionais - Ignora launcher, AOD service e Google Search para melhor eficiência
  • 📱 Menos ruído - Redução significativa de eventos desnecessários nos logs
  • 🎯 Foco melhorado - Monitora apenas apps relevantes para detecção de apostas

0.2.7 #

  • 🧠 DETECÇÃO INTELIGENTE - Lógica melhorada para evitar falsos positivos em contextos seguros
  • Filtros inteligentes - Ignora "bet.br" em textos educativos, só triggera em contextos suspeitos
  • ⏱️ Menos eventos - Cooldown aumentado para 10s e filtro do systemui para reduzir spam
  • 🎯 Melhor precisão - Evita detecção no próprio app com filtros expandidos
  • 📱 Rota corrigida - Documentação atualizada para usar rota correta "blocksPopUp"

0.2.6 #

  • 🛠️ CORREÇÃO CRÍTICA - Variável currentTime duplicada no KeywordBlockerService.kt
  • Conflito resolvido - Renomeado triggerTime para evitar conflitos de declaração
  • Build Android corrigido - Agora compila sem erros no Kotlin

0.2.5 #

  • 🛠️ HOTFIX CRÍTICO - Removido export do stopou_blocker_actions.dart temporariamente
  • Correção de compilação - stopou_blocker_actions.dart não é mais importado automaticamente
  • Workaround para v0.2.3 - Usuários podem usar StopouBlocker diretamente sem erros
  • ⚠️ Breaking change temporário - stopou_blocker_actions deve ser importado manualmente se necessário

0.2.4 #

  • 🛠️ CORREÇÃO CRÍTICA - Erro de compilação "Too few positional arguments" no startKeywordBlocker
  • Parâmetros corrigidos - startKeywordBlocker agora recebe corretamente o parâmetro keywords
  • Build corrigido - Versão publicada no pub.dev agora compila sem erros
  • Actions funcionais - stopou_blocker_actions.dart totalmente funcional

0.2.0 #

  • 🚀 NOVA FUNCIONALIDADE - Parâmetro redirectRoute no startKeywordBlocker
  • Intent Redirect - Abre MainActivity com rota específica quando redirectRoute é fornecido
  • Overlay de Acessibilidade - Overlay em tela cheia quando não há redirectRoute
  • Android 12+ Compatible - Remove Toast, usa TYPE_ACCESSIBILITY_OVERLAY
  • Sem SYSTEM_ALERT_WINDOW - Não requer permissões extras de overlay
  • 🎯 Exemplo de uso: startKeywordBlocker(['bet'], redirectRoute: '/exercicio-autocontrole')

0.1.7 #

  • 🔍 LOGS SUPER DETALHADOS - Debug completo para diagnosticar problemas de detecção
  • Mais tipos de eventos - Inclui WINDOW_STATE_CHANGED para melhor detecção
  • Logs de cada palavra - Verifica palavra por palavra nos logs
  • Configuração expandida - Remove restrição de pacotes específicos
  • Força atualização - Keywords forçadas no serviço rodando

0.1.6 #

  • 🛠️ HOTFIX CRÍTICO - Erro de compilação "Unresolved reference 'applicationContext'"
  • Correção: Substituído applicationContext por context em RestrictedSettingsHelper
  • Build corrigido: APK/AAB compilam sem erros

0.1.5 #

  • 🔍 DIAGNÓSTICO KEYWORDS - Logs detalhados para debugging do monitoramento de palavras
  • Método getActiveKeywords() - Verifica quais keywords estão ativas em tempo real
  • FlutterFlow Actions - Arquivo stopou_blocker_actions.dart com métodos simplificados
  • stopKeywordMonitoring() - Método para parar o monitoramento
  • Logs melhorados - KeywordBlockerService mostra estado das keywords
  • Testes corrigidos - Mock implementa todos os métodos necessários
  • SharedPreferences sync - Keywords salvas em duplicado para garantir persistência

0.1.4 #

  • 🛠️ CORREÇÃO CRÍTICA - Erro de compilação Kotlin "Argument type mismatch"
  • Null safety - Correção de e.message nullable em mapOf()
  • Tipo safety - Todas chamadas sendEvent agora usam tipos corretos
  • Build corrigido - APK/AAB agora compilam sem erros

0.1.3 #

  • 🔍 DEBUG VERSION - Logs detalhados para identificar problema da VPN não ativar
  • Logs expandidos - Rastreamento completo do fluxo VPN (plugin → service → interface)
  • Verificação de permissões - Valida permissão VPN antes de tentar iniciar
  • Error handling melhorado - Retorna erros específicos em vez de falhar silenciosamente
  • Diagnóstico de interface - Logs detalhados do processo builder.establish()

0.1.2 #

  • 🛠️ CORREÇÃO CRÍTICA - Serviço de acessibilidade não aparecendo nas configurações
  • AndroidManifest corrigido - Nome completo do serviço (app.stopou.stopou_blocker.KeywordBlockerService)
  • Label adicionado - Serviço agora aparece como "Stopou Blocker" nas configurações
  • Configuração XML limpa - Removida configuração incorreta de settingsActivity
  • Descrição otimizada - Texto mais claro e direto para aprovação do sistema

0.1.1 #

  • 🔧 CORREÇÃO CRÍTICA - Permissões de acessibilidade em Android restritivo
  • Configuração otimizada do serviço de acessibilidade para evitar bloqueio do sistema
  • Instruções detalhadas no app exemplo para ativar permissões restritas
  • Novo método openAccessibilitySettings() para melhor UX
  • Descrição melhorada do serviço focada em "well-being digital"
  • Configuração menos invasiva (canRetrieveWindowContent=false)

0.1.0 #

  • 🚀 MAJOR UPDATE - Plugin totalmente otimizado para FlutterFlow
  • 6 novos métodos de verificação de status: hasVpnPermission(), hasAccessibilityPermission(), hasNotificationPermission(), isVpnRunning(), isKeywordBlockerRunning()
  • Overlay customizável para alertas (substitui Toast simples)
  • Accessibility Service otimizado (-80% eventos processados, throttling de 1s, cache persistente)
  • VPN robusto com retry automático, health checks e fallback DNS
  • Permissão SYSTEM_ALERT_WINDOW para overlays do sistema
  • Tratamento avançado de erros com recovery automático
  • Testes unitários expandidos para cobertura completa
  • App exemplo redesenhado com dashboard em tempo real
  • Documentação detalhada das melhorias para FlutterFlow

0.0.11 #

  • Atualização de versão para publicação no pub.dev.

0.0.10 #

  • Exibe a palavra-chave detectada no aviso de acessibilidade.

0.0.9 #

  • Atualização de versão para publicação no pub.dev.

0.0.8 #

  • Adicionado enum BlockStrategies e parâmetro strategies no start para definir estratégias de bloqueio.

0.0.7 #

  • Adicionado parâmetro dnsServers no start para configurar servidores DNS iniciais.
  • Removido curinga * do exemplo de blocklist (usar .bet.br).

0.0.6 #

  • Suporte para atualização dinâmica do servidor DNS via updateDnsServers.

0.0.5 #

  • Correção de compatibilidade no método onRequestPermissionsResult (Android 13+).
  • Adicionado suporte à permissão de notificações (POST_NOTIFICATIONS).
  • Melhoria no tratamento de erros e logs no plugin.
  • Ajustes no fluxo de inicialização da VPN.

0.0.4 #

  • Correções na configuração do plugin
  • Ajuste no fluxo de build Android
  • Preparação para testes de VPN no APK

0.0.3 #

Versão corrigida CODEx.

0.0.2 #

  • Separado método de permissão (requestPermission) do método de execução da VPN (startVpn).
  • Melhorias no controle do fluxo de inicialização da VPN.

0.0.1 #

  • Primeira versão publicada do stopou_blocker.
  • Suporte inicial para Android usando VpnService.
  • Exposição de métodos básicos:
    • requestPermission
    • start
    • stop
    • updateBlocklist
    • getStatus
  • Suporte a eventos em tempo real via EventChannel (stopou_blocker/events).

0.7.2 ICONBASE64 + OVERLAY DE ACESSIBILIDADE #

🔧 Ajustes e correções #

  • getInstalledApps(): volta a retornar a chave iconBase64 (com prefixo data:image/png;base64,) para compatibilidade plena com Flutter/FlutterFlow.
  • ✅ Filtro do próprio app: removido filtro com possível typo; mantém exclusão apenas de context.packageName.
  • ✅ Bloqueio de apps: handleBlockedApp() agora usa fallback com AccessibilityOverlay (TYPE_ACCESSIBILITY_OVERLAY), independente de Activity, evitando cair em Toast silencioso.

🧪 Como validar #

  • Rode StopouBlocker.getInstalledApps() e verifique que cada item possui label, packageName e iconBase64.
  • Inicie startAppBlocker(['com.android.chrome']), abra o app e valide o fechamento + overlay de acessibilidade.

0.7.3 Bump para publicação #

  • Bump de versão para liberar no pub.dev após ajustes de iconBase64 e fallback de overlay de acessibilidade (0.7.2).
  • Sem mudanças funcionais adicionais em relação à 0.7.2.
0
likes
150
points
170
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