侧边栏壁纸
博主头像
NewTab

记录生活,分享知识

  • 累计撰写 12 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Flutter 如何阻止用户屏幕截图和屏幕录制

NewTab
2023-07-24 / 0 评论 / 0 点赞 / 162 阅读 / 159 字 / 正在检测是否收录...

只需要在 Android 和 iOS 原生页面进行控制就行

Android 端在MainActivity里面,路径: android/app/src/main/kotlin/包名/MainActivity.kt
import android.view.WindowManager.LayoutParams

class MainActivity: FlutterActivity() {
  override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
		//Android 端添加如下代码
    window.addFlags(LayoutParams.FLAG_SECURE)
    super.configureFlutterEngine(flutterEngine)
  }
}
iOS 端在AppDelegate里面,路径:ios/Runner/AppDelegate.swift
@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)
  }
}
0

评论区