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_SECUREes 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.