изменить видимость кнопки "вход по отпечатку пальца". Ещё при измении определённого флага в стейте выйти с экрана (залогинился успешно, нужно навигировать на другой экран).
Правильно ли использовать для этого LaunchedEffect и можно ли вот так выносить в отдельные функции?
А почему это надо делать именно при старте экрана? Мне кажется логичней было бы просто сохранить куда-нибудь результат этой проверки при старте приложения и потом уже просто читать его без всяких LauchedEffect`ов
Ну получается приложение всегда и стартует с этого экрана. Никто кроме этого экрана не нуждается в этой информации, поэтому даже не знаю. Куда это можно например сохранить?
Ну приложение стартует до любых экранов :) т.е. в Application.onCreate например вы можете это проверить и положить в поле собственно вашего Application
А, я вспомнил в чём у меня проблема. Все разбито на модули по фичам и этот экран в отдельном модуле. Как-то не очень красиво открывать это свойство для всех модулей, которым оно не нужно. Но а вообще как у меня сделано - это приемлимое решение или так нельзя делать?
Ну помимо экрана в этом модуле разве нет ничего? Сервиса там какого-нибудь захудалого и подобного? Вы же как-то вызываете его из главного модуля приложения. Ну а в целом ваш подход просто будет делать эти проверки чаще чем необходимо - каждый раз при переходе на этот экран, т.к. LaunchedEffect будет включаться в композицию каждый раз заново.
Ну я сначала эту проверку в репозитории сделал, но как-то слишком сложно получилось, поэтому просто в файл утилит с парой функций переделал. Можно результат проверки и сейчас просто закэшировать с помощью lazy, но спорно. Может же быть ситуация, что юзер свернул приложение, удалил все отпечатки пальца, зашёл обратно и больше биометрия недоступна. А кнопка появится из-за закэшированного состояния. Наверно пусть лучше каждый раз проверяет.
Обсуждают сегодня