stopou_blocker 0.0.3
stopou_blocker: ^0.0.3 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.1
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ão para rodar como VPN local final ok = await StopouBlocker.requestPermission();
if (ok) {
// Inicia o bloqueio com lista de domínios
await StopouBlocker.start(blocklist: ['*.bet.br']);
// Escuta eventos de bloqueio
StopouBlocker.events.listen((event) {
debugPrint(
"Bloqueado: ${event.host}, protocolo: ${event.protocol}");
});
} else {
debugPrint("Permissão negada pelo usuário");
}
},
),
),
),
);
} }
📡 API Métodos principais
StopouBlocker.requestPermission() Solicita permissão ao usuário para usar a VPN local.
StopouBlocker.start({ blocklist, strategies, logAttempts }) Inicia o bloqueio.
blocklist: lista de domínios (ex: ['*.bet.br']).
strategies: lista de estratégias (BlockStrategies.vpn por padrão).
logAttempts: se true, eventos de tentativa de acesso são emitidos.
StopouBlocker.stop() Para o bloqueio (encerra VPN).
StopouBlocker.updateBlocklist(List
StopouBlocker.getStatus() Retorna Map com informações de status: ativo, estratégias, 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.