Loading...
Loading...
Kotlin for Android: ViewModel, LiveData/StateFlow, coroutines viewModelScope, Gradle KTS, KTX
npx skill4agent add alphaonedev/openclaw-graph android-kotlinandroidx.lifecycle.ViewModelviewModelScope.launch {}build.gradle.ktsContextCompatandroidx.corebuild.gradlebuild.gradle.ktsimplementation "androidx.core:core-ktx:1.7.0"./gradlew build --stacktrace./gradlew assembleDebugViewModelclass MyViewModel : ViewModel() { val data = MutableLiveData<String>() }kotlinx.coroutinesviewModelScope.launch { delay(1000); data.value = "Updated" }val liveData = MutableLiveData<String>()val stateFlow = MutableStateFlow("")requireContext().toast("Message")androidx.fragment.app.Fragmentdependencies { implementation("com.android.tools.build:gradle:7.0.0") }buildConfigField "String", "API_KEY", "\"$SYSTEM_ENV_API_KEY\""androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0ViewModelProvider(this).get(MyViewModel::class.java)org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0viewModelScopelifecycleScope.launchWhenStarted { viewModel.stateFlow.collect { updateUI(it) } }$ANDROID_API_KEYBuildConfig.API_KEYviewModelScope.launch { try { val result = apiCall() } catch (e: Exception) { data.value = "Error: ${e.message}" } }observeviewModel.data.observe(this) { if (it != null) updateUI(it) else showError() }--stacktrace--debug./gradlew build --stacktraceif (context != null) context.startActivity(intent)class UserViewModel : ViewModel() { val userData = MutableLiveData<String>() fun loadData() { userData.value = "Loaded" } }val viewModel: UserViewModel by viewModels(); viewModel.userData.observe(this) { textView.text = it }viewModel.loadData()class DataViewModel : ViewModel() { fun fetchData() = viewModelScope.launch { val result = withContext(Dispatchers.IO) { apiService.getData() } data.value = result } }viewModel.data.observe(viewLifecycleOwner) { if (it.isSuccess) showData(it) else handleError() }