stopou_blocker 0.0.8 copy "stopou_blocker: ^0.0.8" to clipboard
stopou_blocker: ^0.0.8 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.8

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.

0
likes
0
points
9
downloads

Publisher

unverified uploader

Weekly Downloads

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

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on stopou_blocker

Packages that implement stopou_blocker