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

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

example/lib/main.dart

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(
      title: 'Stopou Blocker Demo',
      theme: ThemeData(useMaterial3: true),
      home: const DemoPage(),
    );
  }
}

class DemoPage extends StatefulWidget {
  const DemoPage({super.key});
  @override
  State<DemoPage> createState() => _DemoPageState();
}

class _DemoPageState extends State<DemoPage> {
  final _log = <String>[];

  @override
  void initState() {
    super.initState();
    // ✅ Assina o stream de eventos do plugin.
    // Quando o serviço emitir um evento (bloqueio ou teste),
    // adicionamos uma linha no log (ListView).
    StopouBlocker.events.listen((e) {
      setState(() {
        _log.add(
          "${e.ts.toIso8601String()}   ${e.protocol.padRight(5)}   ${e.host}   ${e.appPackage ?? ''}",
        );
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Stopou VPN Local')),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          children: [
            // 1) Pede permissão de uso de VPN ao usuário
            ElevatedButton(
              onPressed: () async {
                final ok = await StopouBlocker.requestPermission();
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Permissão VPN: $ok')),
                );
              },
              child: const Text('1) Pedir permissão VPN'),
            ),
            const SizedBox(height: 8),

            // 2) Inicia o serviço de VPN com a blocklist padrão (*.bet.br)
            ElevatedButton(
              onPressed: () async {
                await StopouBlocker.start(
                  blocklist: const ['*.bet.br'],
                  // estratégias futuras já previstas; hoje só VPN
                  strategies: const ['VPN'],
                  logAttempts: true,
                );
              },
              child: const Text('2) Iniciar VPN local'),
            ),
            const SizedBox(height: 8),

            // 3) Para o serviço
            ElevatedButton(
              onPressed: () async {
                await StopouBlocker.stop();
              },
              child: const Text('3) Parar'),
            ),
            const Divider(height: 24),

            const Align(
              alignment: Alignment.centerLeft,
              child: Text('Eventos recebidos:', style: TextStyle(fontWeight: FontWeight.bold)),
            ),
            const SizedBox(height: 8),
            Expanded(
              child: ListView.builder(
                itemCount: _log.length,
                itemBuilder: (_, i) => Text(_log[i]),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
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