#flutter #dart
#flutter #dart
Вопрос:
Мне было интересно, как заблокировать скриншоты в flutter только на одной странице. Я читал, что есть способ заблокировать скриншоты в приложении flutter с помощью: getWindow().addFlags(LayoutParams.FLAG_SECURE);
но я так понял, что когда я это делаю, скриншоты блокируются во всем приложении.
Итак, мой вопрос в том, есть ли способ заблокировать скриншоты только на одной странице в приложении flutter на Android и IOS. На любой другой странице скриншоты все равно должны быть возможны. Если кто-то знает решение, пожалуйста, поделитесь им со мной, потому что я не смог найти никакого решения.
Ответ №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 не вызывается, но я думаю, что большинство людей уже знают это.
Теперь мы добились желаемого поведения, теперь невозможно делать скриншоты, записи экрана каким-либо образом, насколько я знаю.
Я надеюсь, что смогу помочь кому-нибудь своим сообщением!
Ответ №2:
Вы могли бы использовать какое-то условие, где вы можете проверить логическое значение. Если это логическое значение равно true, то скриншоты блокируются, в противном случае это не так. Вы можете изменить его на true в initState при переходе к определенному экрану, в противном случае false .
Комментарии:
1. Звучит хорошо, но, насколько я знаю, мне нужно написать строку в классе MainActivity. Как я могу создать логическое значение в моем коде dart, которое влияет на код в классе MainActivity ?