screenshot_blocker_mario

Plugin de Flutter que bloquea capturas de pantalla y grabación de pantalla en iOS y Android, pensado para pantallas con datos sensibles (bancos, salud, enterprise).

Plataformas

Plataforma Implementación
Android WindowManager.LayoutParams.FLAG_SECURE: impide screenshots y que el contenido aparezca en recientes/grabaciones.
iOS Capa segura (UITextField con isSecureTextEntry) sobre la ventana; las capturas/grabaciones no muestran el contenido real.

Instalación

En tu pubspec.yaml:

dependencies:
  screenshot_blocker_mario:
    path: ../screenshot_blocker_mario   # si está en tu repo
  # o desde pub.dev cuando se publique:
  # screenshot_blocker_mario: ^1.0.0

Luego:

flutter pub get

Uso

Activar / desactivar bloqueo

import 'package:screenshot_blocker_mario/screenshot_blocker_mario.dart';

// Activar (pantalla protegida)
await ScreenshotBlocker.enable();

// Desactivar
await ScreenshotBlocker.disable();

// Consultar estado
final bool active = await ScreenshotBlocker.isEnabled();

Ejemplo por pantalla

class SensitiveScreen extends StatefulWidget {
  @override
  State<SensitiveScreen> createState() => _SensitiveScreenState();
}

class _SensitiveScreenState extends State<SensitiveScreen> {
  @override
  void initState() {
    super.initState();
    ScreenshotBlocker.enable();
  }

  @override
  void dispose() {
    ScreenshotBlocker.disable();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(child: Text('Contenido sensible')),
    );
  }
}

API

Método Descripción
ScreenshotBlocker.enable() Activa el bloqueo de capturas y grabaciones.
ScreenshotBlocker.disable() Desactiva el bloqueo.
ScreenshotBlocker.isEnabled() Devuelve true si el bloqueo está activo.

Limitaciones

  • Android: FLAG_SECURE es soportado por el sistema; en grabación o captura el contenido no se muestra.
  • iOS: No existe API pública para “bloquear” la captura; se usa una capa segura para que en screenshot/grabación no se vea el contenido. Puede no comportarse igual en simulador.
  • No evita grabación con cámara externa ni dispositivos rooteados/jailbreak.

Tests

cd screenshot_blocker_mario
flutter test

Licencia

BSD-3-Clause.