Добрый день, решил вывести все поля ввода данные в отдельный виджет, но столкнулся с проблемой.
Основной экран
@Composable
fun AddNoteScreen() {
var NameNote by remember{
mutableStateOf("")
}
var DescriptionNote by remember {
mutableStateOf("")
}
Column(
modifier= Modifier
.fillMaxSize()
.background(bac),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
MainOutlinedTextField(NameNote)
}
}
Виджет
@Composable
fun MainOutlinedTextField(valueUser:String){
OutlinedTextField(
value = valueUser,
onValueChange ={newText->
valueUser=newText
},
colors = TextFieldDefaults.outlinedTextFieldColors(
textColor = Color.White,
unfocusedBorderColor = main_blue,
focusedBorderColor = faded_blue
),
label = {
Text(
text = "Имя заметки",
color = faded_blue,
fontSize = 10.sp
)
},
leadingIcon = {
IconButton(onClick = { }) {
Icon(
imageVector = Icons.Filled.Edit,
contentDescription = null,
tint = faded_blue
)
}
},
singleLine = true,
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Ascii,
imeAction = ImeAction.Go
),
)
}
Но тут появилась ошибка, мол valueUser не изменяемая переменная и так не пойдёт.
Потом я переделал функция под State, и ошибка в виджете исчезла.
@Composable
fun MainOutlinedTextField(valueUser:State<String>){
var uv=valueUser.value
OutlinedTextField(
value = uv,
onValueChange ={newText->
uv=newText
},
colors = TextFieldDefaults.outlinedTextFieldColors(
textColor = Color.White,
unfocusedBorderColor = main_blue,
focusedBorderColor = faded_blue
),
label = {
Text(
text = "Имя заметки",
color = faded_blue,
fontSize = 10.sp
)
},
leadingIcon = {
IconButton(onClick = { }) {
Icon(
imageVector = Icons.Filled.Edit,
contentDescription = null,
tint = faded_blue
)
}
},
singleLine = true,
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Ascii,
imeAction = ImeAction.Go
),
)
}
Но появилась ошибка в основном экране
Type mismatch.
Required:
State<String>
Found:
String
Я попытался переделать переменную
var NameNote = mutableStateOf("")
Но всё равно нечего не вышло.