如何仅在一页上阻止颤动中的屏幕截图?

时间:2020-12-21 08:02:46

标签: flutter dart

我想知道如何仅在一页上阻止颤动中的屏幕截图。我读到有一种通过在 Flutter 应用程序中阻止屏幕截图的方法,使用:getWindow().addFlags(LayoutParams.FLAG_SECURE); 但我的理解是,当我这样做时,屏幕截图会在整个应用程序中被阻止。

所以我的问题是,有没有办法在 androidIOS 中的 flutter 应用程序中仅在一个页面上阻止屏幕截图。在每个其他页面截图应该仍然是可能的。如果有人知道解决方案,请与我分享,因为我找不到任何解决方案。

2 个答案:

答案 0 :(得分:1)

为了回答我自己的问题,我找到了一种方法来实现我的愿望。使用包: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,但我想大多数人已经知道这一点。

现在我们实现了所需的行为,据我所知,现在无法以任何方式截取屏幕截图和屏幕录制。

我希望我的帖子能帮到别人!

答案 1 :(得分:0)

您可以使用某种条件来检查布尔值。如果该布尔值为真,则屏幕截图会被阻止,否则不会。当您移动到特定屏幕时,您可以在 initState 中将其更改为 true,否则为 false。

相关问题