Мне было интересно, как заблокировать скриншоты во флаттере только на одной странице. Я читал, что есть способ заблокировать скриншоты в флаттер-приложении с помощью: getWindow().addFlags(LayoutParams.FLAG_SECURE); но я так понял, что когда я это делаю, скриншоты блокируются во всем приложении.
Итак, мой вопрос: есть ли способ заблокировать скриншоты только на одной странице в приложении флаттера в Android и IOS. На каждой второй странице скриншоты должны быть возможны. Если кто-то знает решение, пожалуйста, поделитесь им со мной, потому что я не мог найти никакого решения.
Вы можете использовать какое-то условие, где вы можете проверить логическое значение. Если это логическое значение истинно, то скриншоты блокируются, в противном случае — нет. Вы можете изменить его на true в initState при переходе к определенному экрану, в противном случае — на false.
Чтобы ответить на мой собственный вопрос, я нашел способ добиться того, чего желал. С пакетом: flutter_windowmanager вы можете добавлять флаги, а также удалять флаги. Так что это было довольно просто, все, что мне нужно было сделать, это добавить это:
Future<void> secureScreen() async {
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
}
На initState страницы, которую я хотел защитить от скриншотов. А затем добавьте это в метод удаления страницы:
Future<void> clearSecureScreen() async {
await FlutterWindowManager.clearFlags(FlutterWindowManager.FLAG_SECURE);
}
Важно, чтобы страница была удалена из стека, иначе dispose не вызывается, но я думаю, что большинство людей уже знают об этом.
Теперь мы добились желаемого поведения, теперь, насколько я знаю, невозможно делать скриншоты, записи экрана каким-либо образом.
Надеюсь, я смогла помочь кому-нибудь своим постом!
Звучит хорошо, но мне нужно написать строку в классе MainActivity, насколько я знаю. Как я могу создать логическое значение в моем коде дротика, которое влияет на код в классе MainActivity?