flutter - 如何仅在一页上阻止屏幕截图?
问题描述
我想知道如何仅在一页上阻止屏幕截图。我读到有一种方法可以在颤振应用程序中阻止屏幕截图,getWindow().addFlags(LayoutParams.FLAG_SECURE);
但我理解的方式是,当我这样做时,屏幕截图会在整个应用程序中被阻止。
所以我的问题是,有没有办法在android和IOS的颤振应用程序中仅阻止一个页面上的屏幕截图。在所有其他页面上,屏幕截图应该仍然是可能的。如果有人知道解决方案,请与我分享,因为我找不到任何解决方案。
解决方案
为了回答我自己的问题,我找到了一种方法来实现我想要的。使用包:flutter_windowmanager
您可以添加标志,也可以删除标志。所以我所要做的很简单,就是添加这个:
Future<void> secureScreen() async {
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
}
到initState
我想防止屏幕截图的页面。然后将其添加到页面的 dispose 方法中:
Future<void> clearSecureScreen() async {
await FlutterWindowManager.clearFlags(FlutterWindowManager.FLAG_SECURE);
}
从堆栈中删除页面很重要,否则不会调用 dispose,但我认为大多数人已经知道这一点。
现在我们实现了所需的行为,据我所知,现在不可能以任何方式截取屏幕截图和屏幕录像。
我希望我的帖子能帮助别人!
推荐阅读
- node.js - multers3 跳过 shouldTransform
- go - GetMulti 和 PutMulti 如何维护键和目标之间的顺序
- swagger - 使用 Swagger Annotations 生成 XML 命名空间信息
- python - 实现单链表
- visual-studio-code - 通过在集成终端中执行的脚本关闭 vscode 窗口
- google-sheets - 如何反转 Google 表格中的列顺序?
- java - Java:输入两个错误值后程序崩溃
- ruby-on-rails - ReCaptcha 对表单很好,但它也无需确认即可注册
- c++ - SDL2 2D 纹理分配/池化
- javascript - 链接firebase函数的问题