【问题标题】:Send one-shot ViewModel event when using Jetpack Compose使用 Jetpack Compose 时发送一次性 ViewModel 事件
【发布时间】:2022-10-20 22:30:43
【问题描述】:

以前我可以使用 Event 类从 ViewModel 触发导航事件到片段

像这样的东西

[视图模型]

private val _navigate = MutableLiveData<Event<String>>()
val navigate: LiveData<Event<String>> =_navigate

fun onClickNext(id: String) {
     // some processing 
     _navigate.value = Event(id)
}

[分段]

viewModel.navigation.observe(viewLifecycleOwner, EventObserver {
    navigateToUser(it)
})

如何使用 Jetpack Compose 做同样的事情?

场景:用户点击登录按钮,事件转到 ViewModel, ViewModel 进行一些处理,如果操作成功则触发 用于撰写视图以启动导航的事件

【问题讨论】:

    标签: android kotlin android-jetpack-compose android-jetpack-navigation


    【解决方案1】:

    那么你可以做这样的事情

    fun LoginRoute(viewModel: ....., onLoginSuccess:() -> Unit) {
       LoginScreen(
         onClickLogin = {viewModel.onLogin(onLoginSuccess)}
       )
    }
    
    fun LoginScreen(onClickLogin: () -> Unit) {
        // Invoke login somethow
    }
    
    class LoginViewModel (): ViewModel {
        fun onLogin(success: () -> Unit) {
            // Launch coroutine or whatever
            // Show progress bar
            // When login is successful call 
            success()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多