philipy355 / inflearn-compose

0 stars 0 forks source link

docs : Compose에서 사용하는 ViewModel & State<String> (#3) #13

Open philipy355 opened 11 months ago

philipy355 commented 11 months ago
  class MainViewModel : ViewModel() {
      private val _data = mutableStateOf("Hello")
      val data : State<String> = _data

      fun changeValue(){
          _data.value = "world"
      }
  }

  class MainActivity : ComponentActivity() {
      @OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class)
      @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter",
          "UnusedMaterialScaffoldPaddingParameter"
      )
      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          setContent {
              //compose안에서 viewmodel 사용하기
              val viewModel = viewModel<MainViewModel>()
              Column(
                  modifier = Modifier.fillMaxSize(),
                  verticalArrangement = Arrangement.Center,
                  horizontalAlignment = Alignment.CenterHorizontally,
              ){
                  Text(
                      viewModel.data.value,
                      fontSize = 30.sp
                  )
                  Button(onClick = {
                      //viewModel.data.value = "World"
                      viewModel.changeValue()
                  }){
                      Text("변경")
                  }
              }
          }
      }
  }