prongbang / screen_protector

Safe Data Leakage via Application Background Screenshot and Prevent Screenshot for Android and iOS.
https://pub.dev/packages/screen_protector
MIT License
42 stars 23 forks source link
data-leakage data-leakage-background-screenshot prevent-screenshot-android prevent-screenshot-ios

screen_protector

Safe Data Leakage via Application Background Screenshot and Prevent Screenshot for Android and iOS.

"Buy Me A Coffee"

Feature

Import

import 'package:screen_protector/screen_protector.dart';

iOS

Protect Data Leakage Background Screenshot

await ScreenProtector.protectDataLeakageWithImage('LaunchImage');
await ScreenProtector.protectDataLeakageWithColor(Colors.white);
await ScreenProtector.protectDataLeakageWithColorOff();
await ScreenProtector.protectDataLeakageWithBlur();
await ScreenProtector.protectDataLeakageWithBlurOff();

Prevent Screenshot

await ScreenProtector.preventScreenshotOn();
await ScreenProtector.preventScreenshotOff();

Check Screen Recording

final isRecording = await ScreenProtector.isRecording();

Android

Protect Data Leakage Background Screenshot and Prevent Screenshot

await ScreenProtector.protectDataLeakageOn();

or

await ScreenProtector.preventScreenshotOn();
await ScreenProtector.protectDataLeakageOff();

or

await ScreenProtector.preventScreenshotOff();

Protect Data Leakage for Android 12+ (Optional)

https://github.com/prongbang/screen-protector

import com.prongbang.screenprotect.AndroidScreenProtector

class MainActivity : FlutterFragmentActivity() {

    private val screenProtector by lazy { AndroidScreenProtector.newInstance(this) }

    // For Android 12+
    override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)
        screenProtector.process(hasFocus.not())
    }
}

Usage

Android

import 'package:screen_protector/screen_protector.dart';

class _PreventScreenshotPageState extends State<MyApp> {

  void _preventScreenshotOn() async => await ScreenProtector.protectDataLeakageOn();

  void _protectDataLeakageOff() async => await ScreenProtector.protectDataLeakageOff();

  @override
  void initState() {
    _preventScreenshotOn();
    super.initState();
  }

  @override
  void dispose() {
    _protectDataLeakageOff();
    super.dispose();
  }

}

iOS

import 'package:screen_protector/screen_protector.dart';

class _PreventScreenshotPageState extends State<MyApp> {

  void _preventScreenshotOn() async => await ScreenProtector.preventScreenshotOn();

  void _preventScreenshotOff() async => await ScreenProtector.preventScreenshotOff();

  @override
  void initState() {
    _preventScreenshotOn();
    super.initState();
  }

  @override
  void dispose() {
    _preventScreenshotOff();
    super.dispose();
  }

}
import 'package:screen_protector/screen_protector.dart';

class _ProtectDataLeakagePageState extends State<MyApp> {

  void _protectDataLeakageWithColor() async => await ScreenProtector.protectDataLeakageWithColor(Colors.white);

  @override
  void initState() {
    _protectDataLeakageWithColor();
    super.initState();
  }

}

image01.png

import 'package:screen_protector/screen_protector.dart';

class _ProtectDataLeakagePageState extends State<MyApp> {

  void _protectDataLeakageWithImage() async => await ScreenProtector.protectDataLeakageWithImage('LaunchImage');

  @override
  void initState() {
    _protectDataLeakageWithImage();
    super.initState();
  }

}
import 'package:screen_protector/screen_protector.dart';

class _ProtectDataLeakagePageState extends State<MyApp> {

  void _protectDataLeakageWithBlur() async => await ScreenProtector.protectDataLeakageWithBlur();

  @override
  void initState() {
    _protectDataLeakageWithBlur();
    super.initState();
  }

}