stopou_blocker 0.0.9
stopou_blocker: ^0.0.9 copied to clipboard
Plugin do Stopou para bloqueio por VPN local (preparado para estratégias futuras).
stopou_blocker
Plugin Flutter do Stopou para bloqueio de sites e apps através de uma VPN local no Android. O projeto está preparado para múltiplas estratégias futuras (DNS_ONLY, ACCESSIBILITY, SAFARI_BLOCKER), mas a versão inicial foca em VPN Service.
🚀 Instalação
No seu pubspec.yaml adicione:
dependencies: stopou_blocker: ^0.0.9
Depois rode:
flutter pub get
📌 Uso básico
Importe o pacote:
import 'package:stopou_blocker/stopou_blocker.dart';
Exemplo completo: import 'package:flutter/material.dart'; import 'package:stopou_blocker/stopou_blocker.dart';
void main() { runApp(const MyApp()); }
class MyApp extends StatelessWidget { const MyApp({super.key});
@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('Stopou Blocker Example')), body: Center( child: ElevatedButton( child: const Text('Ativar bloqueio'), onPressed: () async { // Solicita permissões necessárias final vpnOk = await StopouBlocker.requestPermission(); final notifOk = await StopouBlocker.requestNotificationPermission();
if (vpnOk && notifOk) {
// Inicia o bloqueio com lista de domínios
await StopouBlocker.start(
blocklist: ['.bet.br'],
dnsServers: ['1.1.1.1'],
strategies: [BlockStrategies.vpn],
);
// Escuta eventos de bloqueio
StopouBlocker.events.listen((event) {
debugPrint(
"Bloqueado: ${event.host}, protocolo: ${event.protocol}");
});
} else {
debugPrint("Permissões negadas pelo usuário");
}
},
),
),
),
);
} }
📡 API Métodos principais
StopouBlocker.requestPermission() Solicita permissão ao usuário para usar a VPN local.
StopouBlocker.requestNotificationPermission() Solicita permissão de envio de notificações (necessária para Android 13+).
StopouBlocker.start({ blocklist, logAttempts, dnsServers, strategies }) Inicia o bloqueio.
blocklist: lista de domínios (ex: ['.bet.br']). Adicione 'bet.br' para bloquear também o domínio raiz.
logAttempts: se true, eventos de tentativas bloqueadas são emitidos.
dnsServers: lista de servidores DNS customizados.
strategies: lista de estratégias de bloqueio (ex: [BlockStrategies.vpn]).
StopouBlocker.stop() Para o bloqueio (encerra VPN).
StopouBlocker.updateBlocklist(List
StopouBlocker.updateDnsServers(List
StopouBlocker.getStatus() Retorna Map com informações de status: ativo, etc.
Eventos
StopouBlocker.events Stream de BlockEvent emitida pelo plugin. Cada evento contém:
host → domínio bloqueado.
appPackage → pacote do app de origem (se detectado).
protocol → DNS/TLS/QUIC/etc.
ts → timestamp do evento.
📱 Plataformas suportadas
✅ Android (via VpnService)
⏳ iOS (em planejamento)
⏳ Outras estratégias futuras (DNS_ONLY, ACCESSIBILITY, SAFARI_BLOCKER)
🛠 Desenvolvimento
O plugin expõe:
MethodChannel → stopou_blocker/methods
EventChannel → stopou_blocker/events
Código nativo Android está em android/src/main/kotlin/app/stopou/stopou_blocker/.
Para rodar localmente o exemplo:
cd example flutter run
📄 Licença
Este projeto está licenciado sob a licença MIT – veja o arquivo LICENSE para mais detalhes.