Спасибо, за статью, автор очень хорошо раскрыл тему. А можете объяснить, зачем вы создаёте интерфейс FetchMemesUseCase, который имеет только одну реализацию. Я где-то читал, что в таком случае интфейс не нужен.
TextField позволяет вам установить VisualTransformation для входного значения, например заменить символы на * для паролей или вставить дефисы каждые 4 цифры для номера кредитной карты:
Кстати, там еще нужно позаботиться о правильном положении курсора при переходе через позиции символов "-", эти тоже должна заниматься отдельная сущность типа CursorCalculator?
В дока об этом я нашел только это: "Чтобы управлять положением курсора при очистке текста, используйте перегрузку TextFieldValue TextField как часть состояния." Не очен наглядное объяснение. Можно будет это осветить в следующей статье, пожалуйста?)
Спасибо за труд, идея выносить viewModel выглядит обоснованной. У меня один небольшой вопрос по поводу LoginScreenRoot. Этот LoginScreenRoot нужен только для выноса вью-модели или у него есть еще какой-то смысл? Без него можно было бы сразу показывать экран логинаLoginScreen. А так мы каждый экран должны вкладывать в совой RootScreen, что увеличивает вложенность. Спасибо
Спасибо за полезную статью! У меня остался вопрос по части 2. Используем Hilt.
Там написано: Пока мы не передаем никаких дополнительных параметров из фрагмента во вьюмодель, этот инструмент работает как часы
Вопрос: что мешает во вьюмодели иметь метод
fun passData(data: String) и во фрагменте его вызывать для передачи данных? Или речь о какой-то другой передачи данных из фрагмента во вьюмодель? Спасибо
Большое спасибо, за такой развёрнутый ответ!
Спасибо, за статью, автор очень хорошо раскрыл тему. А можете объяснить, зачем вы создаёте интерфейс
FetchMemesUseCase, который имеет только одну реализацию. Я где-то читал, что в таком случае интфейс не нужен.
Вот я попробовал воспользоваться наработками из этой статьи, вдруг будет инетересно: https://github.com/dstarchevskyy/SnilsInputValidation
Еще раз спасибо за ответы, но у меня остался еще вопрос. Будет ли возможность интегрировать этот подход с существующим в Android Jetpack Compose объектом класса VisualTransformation (https://developer.android.com/reference/kotlin/androidx/compose/ui/text/input/VisualTransformation)
ОФициальная дока рекомендует:
Формат ввода
TextField
позволяет вам установитьVisualTransformation
для входного значения, например заменить символы на*
для паролей или вставить дефисы каждые 4 цифры для номера кредитной карты:Кстати, там еще нужно позаботиться о правильном положении курсора при переходе через позиции символов "-", эти тоже должна заниматься отдельная сущность типа CursorCalculator?
В дока об этом я нашел только это: "Чтобы управлять положением курсора при очистке текста, используйте перегрузку TextFieldValue TextField как часть состояния." Не очен наглядное объяснение. Можно будет это осветить в следующей статье, пожалуйста?)
а можно еще пример когда где
FormField связывается с EditText или FormField? плз
В тестах получаю ошибку "Unresolved reference: withData". Я пробовал разные версии библиотек, какие у вас?
Статья супер, спасибо огромное. Нашел мелкую опечатку:
object
FilterMaxLength(
private
val
maxLength:
Int
) : Filter {
override
fun
filter(
data
:
String
):
String
= date.take(maxLength)}
Вместо date должно быть data, а еще вместо object должен быть class. Иначе ошибка: Constructors are not allowed for objects
Спасибо за труд, идея выносить viewModel выглядит обоснованной. У меня один небольшой вопрос по поводу
LoginScreenRoot. Этот LoginScreenRoot нужен только для выноса вью-модели или у него есть еще какой-то смысл? Без него можно было бы сразу показывать экран логина
LoginScreen. А так мы каждый экран должны вкладывать в совой RootScreen, что увеличивает вложенность. Спасибо
Спасибо за полезную статью! У меня остался вопрос по части 2. Используем Hilt.
Там написано: Пока мы не передаем никаких дополнительных параметров из фрагмента во вьюмодель, этот инструмент работает как часы
Вопрос: что мешает во вьюмодели иметь метод
fun passData(data: String) и во фрагменте его вызывать для передачи данных? Или речь о какой-то другой передачи данных из фрагмента во вьюмодель? Спасибо