Upgrade to Pro — share decks privately, control downloads, hide ads and more …

StateMachineを理解しよう

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for ko-tarou ko-tarou
November 17, 2025

 StateMachineを理解しよう

Avatar for ko-tarou

ko-tarou

November 17, 2025

Other Decks in Programming

Transcript

  1. @Composable fun TestScreen() { var age by remember { mutableStateOf(“”)

    } Column(…) { TextField( value = age, onValueChange = { it -> age = it }, ) Text( text = age ) } }
  2. @Composable fun TestScreen( viewModel: TestViewModel = viewModel() ) { val

    age by viewModel.text.collectAsState() Column(…) { TextField( value = age, onValueChange = { it -> viewModel.updateAge( it ) }, ) Text( text = age ) } } class TestViewModel : ViewModel() { private val _age.MutableStateFlow (””) val age : StateFlow<String> = _age fun updateAge( newAge : String ) { _age.value = newAge } }
  3. @Composable fun TestScreen( viewModel: TestViewModel = viewModel() ) { val

    age by viewModel.text.collectAsState() Column(…) { TextField( value = age, onValueChange = { it -> viewModel.updateAge( it ) }, ) Text( text = age ) } } class TestViewModel : ViewModel() { private val _age.MutableStateFlow (””) val age : StateFlow<String> = _age fun updateAge( newAge : String ) { _age.value = newAge } } 4UBUF஋ͷঢ়ଶ
  4. Enum class PersonState { ELEMENTARY, MIDDLE, HIGH, ADULT, NONE }

    fun getPersonState(age: Int) : PersonState { return when (age) { in 6..12 -> PersonState.ELEMENTARY in 13..15 -> PersonSate.MIDDLE in 16..18 -> PersonState.HIGH in 19..120 -> PersonState.ADULT else -> PersonState.NONE } }
  5. class TestViewModel : ViewModel() { private val _age.MutableStateFlow (””) +

    private val _showInput.MutableStateFlow (true) val age : StateFlow<String> = _age + val showInput : StateFlow<Boolean> = _showInput + private val _state.MutableStateFlow (PersonState.NONE) + val state : StateFlow<PersonState> = _state fun updateAge( newAge : String ) { _age.value = newAge + val age = newAge.toInt() + _state.value = getPersonState(age) + _showInput.value = (state.value == PersonState.NONE) } }
  6. @Composable fun TestScreen( viewModel: TestViewModel = viewModel() ) { val

    age by viewModel.text.collectAsState() + val showInput by viewModel.showInput.collectAsState() Column(…) { + if ( showInput ) { TextField( value = age, onValueChange = { it -> viewModel.updateAge( it ) }, ) + } Text( text = age ) } }
  7. ຊདྷͳΒ͹ɾɾ ˠ Enum class PersonState { ELEMENTARY, MIDDLE, HIGH, ADULT,

    NONE } Enum class PersonState { Idle, Loading, Success, Error, }