如何在 JetpackCompose 中的 TextField 上加载值

问题描述

我有这个 TextField,我希望它从 Firestore 中的对象加载一个名称,然后我希望能够更改 Firestore 中的值和更新。我尝试了几种方法,但是当我加载该值时,我无法更改它或应用程序崩溃。

以下是我最后一次尝试,其中 textField (editText) 显示为空白。我需要在 textField 中加载 player.name 以便我可以更新它

@Hiltviewmodel
class Profileviewmodel @Inject constructor(
    private val repository: PlayersRepository
) : viewmodel() {

    var loading = mutableStateOf(false)

    val data: MutableState<Player?> = mutableStateOf(null)
    val editText = mutableStateOf(
        data.value?.name ?: ""
    )

    init {
        getUser()
    }

    fun onValueChanged(text: String){
        this.editText.value = text
    }

    private fun getUser() {
        loading.value = true
        viewmodelScope.launch {
            val loggedUser = repository.getPlayerFromFirestore().data
            loggedUser!!.addOnSuccessListener { document ->
                val logged = document.toObject(Player::class.java)
                data.value = logged!!
                loading.value = false
            }
        }
    }
@AndroidEntryPoint
class ProfileFragment : Fragment() {

    private val viewmodel: Profileviewmodel by viewmodels()
    override fun onCreateView(
        inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
    ): View {

        return ComposeView(requireContext()).apply {
            setContent {
                val player = viewmodel.data.value
                selectedImageUri.value = player?.image?.toUri()
                ReiDoFifaTheme {

if (player != null) {
                       OutlinedTextField(
                         modifier = Modifier
                        .align(Alignment.CenterHorizontally)
                        .padding(bottom = 16.dp),value = editText,onValueChange = { newValue ->
                       viewmodel.onValueChanged(newValue)
                 }

      )

另外,如何指定 textField 只接受正整数并将其限制为 2 位数字?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)