Как заблокировать скриншоты в flutter только на одной странице?

#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 ?