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

Мне было интересно, как заблокировать скриншоты во флаттере только на одной странице. Я читал, что есть способ заблокировать скриншоты в флаттер-приложении с помощью: getWindow().addFlags(LayoutParams.FLAG_SECURE); но я так понял, что когда я это делаю, скриншоты блокируются во всем приложении.

Итак, мой вопрос: есть ли способ заблокировать скриншоты только на одной странице в приложении флаттера в Android и IOS. На каждой второй странице скриншоты должны быть возможны. Если кто-то знает решение, пожалуйста, поделитесь им со мной, потому что я не мог найти никакого решения.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
5
0
599
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать какое-то условие, где вы можете проверить логическое значение. Если это логическое значение истинно, то скриншоты блокируются, в противном случае — нет. Вы можете изменить его на true в initState при переходе к определенному экрану, в противном случае — на false.

Звучит хорошо, но мне нужно написать строку в классе MainActivity, насколько я знаю. Как я могу создать логическое значение в моем коде дротика, которое влияет на код в классе MainActivity?

tims 21.12.2020 10:49
Ответ принят как подходящий

Чтобы ответить на мой собственный вопрос, я нашел способ добиться того, чего желал. С пакетом: flutter_windowmanager вы можете добавлять флаги, а также удалять флаги. Так что это было довольно просто, все, что мне нужно было сделать, это добавить это:

Future<void> secureScreen() async {
        await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
        }

На initState страницы, которую я хотел защитить от скриншотов. А затем добавьте это в метод удаления страницы:

Future<void> clearSecureScreen() async {
        await FlutterWindowManager.clearFlags(FlutterWindowManager.FLAG_SECURE);
      }

Важно, чтобы страница была удалена из стека, иначе dispose не вызывается, но я думаю, что большинство людей уже знают об этом.

Теперь мы добились желаемого поведения, теперь, насколько я знаю, невозможно делать скриншоты, записи экрана каким-либо образом.

Надеюсь, я смогла помочь кому-нибудь своим постом!

Другие вопросы по теме