An Interest In:
Web News this Week
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
- April 13, 2024
- April 12, 2024
- April 11, 2024
Some of Our Sources
View All Sources
September 20, 2022 02:12 pm GMT
Original Link: https://dev.to/odinachi/how-to-block-screenshot-in-your-flutter-app-18d5
How to block Screenshots in your flutter app
when building highly secured apps, it can be essential to stop the user from taking screenshots, while this is quite straightforward on Android, it gets a little bit tricky on the iOS part. I remember facing this challenge some months ago and I scanned through a couple of StackOverflow answers for hours, I was at the point of getting frustrated when I stumbled on one that was the solution for the iOS part:
For Android:
- inside your mainActivity.(java/tk), import the following:
import io.flutter.embedding.android.FlutterFragmentActivityimport io.flutter.embedding.engine.FlutterEngineimport io.flutter.plugins.GeneratedPluginRegistrantimport android.view.WindowManager.LayoutParams
- and you replace the content with:
class MainActivity: FlutterFragmentActivity() { override fun configureFlutterEngine(flutterEngine: FlutterEngine) { window.addFlags(LayoutParams.FLAG_SECURE) GeneratedPluginRegistrant.registerWith(flutterEngine) }}
this does it for Android.
For iOS:
- in your AppDelegate.swift you should create a window extension just like below:
extension UIWindow { func makeSecure() { let field = UITextField() field.isSecureTextEntry = true self.addSubview(field) field.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true field.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true self.layer.superlayer?.addSublayer(field.layer) field.layer.sublayers?.first?.addSublayer(self.layer) } }
then call the new window extension in your application function:
self.window.makeSecure()
your AppDelegate.swift should look like this:
import UIKitimport Flutter@UIApplicationMain@objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { self.window.makeSecure() GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) }} extension UIWindow { func makeSecure() { let field = UITextField() field.isSecureTextEntry = true self.addSubview(field) field.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true field.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true self.layer.superlayer?.addSublayer(field.layer) field.layer.sublayers?.first?.addSublayer(self.layer) } }
Source: stackoverflow answer
thank you for reading, I hope this was helpful.
Original Link: https://dev.to/odinachi/how-to-block-screenshot-in-your-flutter-app-18d5
Share this article:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To