This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// viewModel layer | |
class MyViewModel: ViewModel() { | |
private val _eventWithChannel = Channel<Event>() | |
val eventFlowFromChannel = _eventWithChannel.receiveAsFlow() | |
} | |
// compose layer | |
LaunchedEffect(lifecycleOwner) { | |
lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { | |
viewModel.eventFlowFromChannel.collect { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
private fun SecondComposable(onDoSomethingElse: suspend () -> Unit) { | |
LaunchedEffect(Unit) { | |
onDoSomethingElse() | |
} | |
Text(text = "hello second") | |
Button( | |
onClick = {} | |
) { | |
Text(text = "Click me to do something else") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
restartable scheme("[androidx.compose.ui.UiComposable]") fun SecondComposable( | |
unstable onDoSomethingElse: SuspendFunction0<Unit> | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
private fun SecondComposable(onDoSomethingElse: suspend () -> Unit) { | |
val scope = rememberCoroutineScope() | |
Text(text = "hello second") | |
Button( | |
onClick = { | |
scope.launch { | |
onDoSomethingElse() | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
fun MainScreen( | |
viewModel: MainViewModel = hiltViewModel(), | |
) { | |
val onUpdateState: () -> Unit = remember(viewModel) { | |
return@remember viewModel::updateState | |
} | |
val onDoSomethingElse: () -> Unit = remember(viewModel) { | |
return@remember viewModel::doSomethingElse |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun TextThatDisplaysState( | |
stable state: String | |
) | |
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun FirstComposable( | |
stable onUpdateState: Function0<Unit> | |
) | |
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun SecondComposable( | |
stable onDoSomethingElse: Function0<Unit> | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
fun TextThatDisplaysState(state: String) { | |
Text(text = state) | |
} | |
@Composable | |
private fun FirstComposable(onUpdateState: () -> Unit) { | |
Text(text = "hello first") | |
Button( | |
onClick = { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
fun MainContent( | |
state: String, | |
onUpdateState: () -> Unit, | |
onDoSomethingElse: () -> Unit | |
) { | |
Column { | |
TextThatDisplaysState(state = state) | |
FirstComposable(onUpdateState = onUpdateState) | |
SecondComposable(onDoSomethingElse = onDoSomethingElse) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
fun MainScreen( | |
viewModel: MainViewModel = hiltViewModel(), | |
) { | |
val state: String by viewModel.state.collectAsStateWithLifecycle() | |
MainContent( | |
state = state, | |
onUpdateState = viewModel::updateState, | |
onDoSomethingElse = viewModel::doSomethingElse, | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
fun MainContent( | |
state: String, | |
onUpdateState: () -> Unit, | |
onDoSomethingElse: () -> Unit | |
) { | |
Column { | |
Text(text = state) | |
Text(text = "hello first") | |
Button( |