secure_screen_wrapper 1.0.1
secure_screen_wrapper: ^1.0.1 copied to clipboard
Prevent screenshots on Android, iOS, and Web. Blocks screenshots on Android, makes them black on iOS, and adds protection layers on Web.
Secure Screen Wrapper #
A Flutter package that prevents screenshots and screen recording across Android, iOS, and Web platforms.
Features #
| Platform | Protection Method | Effectiveness |
|---|---|---|
| Android | FLAG_SECURE |
Complete block |
| iOS | Secure text entry layer | Screenshots appear black |
| Web | Multi-layer protection | Best effort (browser limitations) |
Web Protection Layers: #
- Disables right-click context menu
- Blocks text selection and copy
- Prevents screenshot keyboard shortcuts
- Blurs content when tab loses focus
- Adds watermark overlay
- Prevents drag and drop
Installation #
Add to your pubspec.yaml:
dependencies:
secure_screen_wrapper: ^1.0.0
Run:
flutter pub get
Usage #
Protect Specific Screens #
import 'package:secure_screen_wrapper/secure_screen_wrapper.dart';
class PaymentScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SecureScreenWrapper(
child: Scaffold(
appBar: AppBar(title: Text('Payment Details')),
body: YourSensitiveContent(),
),
);
}
}
Global Protection #
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SecureScreen.enable();
runApp(MyApp());
}
Dynamic Control #
SecureScreenWrapper(
enabled: _isSecureMode, // Toggle with state
child: YourWidget(),
)
Platform Setup #
Android #
No additional setup required!
iOS #
No additional setup required!
Web #
No additional setup required!
Important Notes #
- Android: Screenshots are completely blocked at OS level
- iOS: Screenshots can be taken but appear as black screens
- Web: Protection has limitations due to browser security restrictions. Determined users with external tools may still capture content, but casual screenshot attempts are blocked.
API Reference #
SecureScreenWrapper #
Widget that protects its child from screenshots.
Properties:
child(Widget, required): The widget to protectenabled(bool, optional): Enable/disable protection (default: true)
SecureScreen #
Global security control.
Web Platform Limitations #
IMPORTANT: Web browsers cannot completely block screenshots at the OS level due to browser security restrictions.
What Web Protection Does: #
Disables right-click context menu Blocks text selection and copy Prevents common keyboard shortcuts (PrintScreen, Ctrl+Shift+S, etc.) Blurs content when tab loses focus Adds watermark overlay Blocks developer tools shortcuts Prevents drag and drop of images
What Web Protection CANNOT Do: #
Block OS-level screenshot tools (Windows Snipping Tool, macOS Cmd+Shift+4, etc.) Block browser extensions that capture screenshots Block external screen capture devices/software Prevent screenshots if JavaScript is disabled
Recommendation: #
For truly sensitive data on web, consider:
- Using session-based access with time limits
- Adding visible watermarks with user info
- Implementing server-side watermarking
- Using DRM-protected content delivery
- Requiring authentication and logging access
Methods:
SecureScreen.enable(): Enable protection globallySecureScreen.disable(): Disable protection globally
Testing #
Try these on different platforms:
- Take a screenshot (Android: blocked, iOS: black screen, Web: prevented)
- Right-click (Web: disabled)
- Select text (Web: disabled)
- Press PrintScreen (Web: prevented)
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Issues #
Found a bug? Report it here
Support #
If you find this package helpful, please give it a ⭐ on GitHub!