在 android 视图模型中初始化值

initialize value in android viewmodels

我在 viewmodels 中使用 init 方法并在 main activity 访问它时遇到错误 activity。

未解决的参考:loginStatus

我认为它无法访问这个值。

我该如何解决这个问题?

class LoginViewModel: ViewModel() {

    init {
        if (Firebase.auth.currentUser != null) {
            val loginStatus by mutableStateOf(true)

        } else {
            val loginStatus by mutableStateOf(false)
        }
    }
}

@AndroidEntryPoint
class MainActivity() : AppCompatActivity() {

    private val loginViewModel: LoginViewModelby viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (loginViewModel.loginStatus) {
            println("login true")
        }
    }
}

我尝试用懒惰的方法解决这个问题,但是,它没有用。有什么方法吗?

val loginStatus : Boolean by lazy { mutableStateOf(true)}

你可以像这样在 init 块外写代码

val loginStatus by lazy {
      mutableStateOf(Firebase.auth.currentUser != null)    
  }

or 

 val loginStatus by lazy {
        if (Firebase.auth.currentUser != null) {
            mutableStateOf(true)

        } else {
            mutableStateOf(false)
        }
    }