You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: learning/libraries/moko/moko-fields.md
+41-4Lines changed: 41 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,16 +15,52 @@ sidebar_position: 6
15
15
## FormField
16
16
17
17
Потребность в библиотеке возникла из-за того, что для создания логики формы ввода в общем коде необходимы следующие элементы:
18
-
-`LiveData(String)` - текст поля
19
-
-`LiveData(Bool)` - валидно/невалидно поле
20
-
-`LiveData(String)` - текст ошибки валидации
18
+
-`LiveData/StateFlow(String)` - текст поля
19
+
-`LiveData/StateFlow(Bool)` - валидно/невалидно поле
20
+
-`LiveData/StateFlow(String)` - текст ошибки валидации
21
21
22
22
А представьте, что у вас 7 или 8 таких полей, получится много однотипного кода, в котором легко будет запутаться и допустить ошибку.
23
23
24
-
Библиотека позволяет использовать специальный класс `FormField` для форм ввода, который включает в себя все эти три лайвдаты.
24
+
Библиотека позволяет использовать специальный класс `FormField` для форм ввода, который включает в себя все эти три лайвдаты/стейт флоу.
25
25
26
26
Для создания `FormField` необходимо только установить тип и задать валидацию для этого значения. Тип поля не обязательно должен быть `String`, подойдет любой, который можно как-то установить: `int`, `bitmap`, `data` и тд.
27
27
28
+
Для Jetpack Compose и Compose Multiplatform двусторонная связка для передачи значения введенного текста поля в View Model не работает, необходимо реализовывать на UI TextField c onValueChange.<br/>
29
+
В коде экрана:
30
+
31
+
```kotlin
32
+
val (code, onCodeChange) = viewModel.code.data.collectAsMutableState()
- можно использовать [встроенные валидаторы](https://github.com/icerockdev/moko-fields/tree/c9c09069da717d4995ee6c96f8ec6ef7446af503/fields/src/commonMain/kotlin/dev/icerock/moko/validations)
@@ -36,3 +72,4 @@ sidebar_position: 6
36
72
- поля можно объединить в список и валидировать их одновременно
37
73
- валидация полей может быть завязана на других полях (пароль + повторите пароль)
38
74
- у FormField есть поле `isValid` и `validationError`
0 commit comments