implementation 'androidx.lifecycle:lifecycle-runtime:2.4.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07'
implementation 'androidx.compose.ui:ui:1.0.2'
implementation 'androidx.compose.runtime:runtime:1.0.2'
implementation 'androidx.compose.ui:ui-tooling-preview:1.0.2'
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class MyViewModel : ViewModel() {
var count = 0
init {
viewModelScope.launch {
count++
}
}
}
kotlin
import androidx.compose.foundation.layout.Column
import androidx.compose.material.Button
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.viewmodel.compose.viewModel
@Composable
fun MyScreen(myViewModel: MyViewModel = viewModel()) {
var count by remember { mutableStateOf(0) }
MaterialTheme {
Column(modifier = Modifier.fillMaxSize()) {
Button(
onClick = {
count++
},
modifier = Modifier.align(alignment = Alignment.CenterHorizontally)
) {
Text(text = "Click Me")
}
Text(
text = "Count: ${myViewModel.count}",
modifier = Modifier.align(alignment = Alignment.CenterHorizontally)
)
}
}
}
@Composable
@Preview
fun PreviewMyScreen() {
MyScreen()
}