我用来TextField获取用户输入并使用 stateflow 来处理视图模型中的文本状态/值。
问题是每次TextField的值发生变化时,HomeContent()函数都会被重新组合。
布局检查器输出图像
我的问题是,仅仅HomeContent()因为值发生变化就可以重构整个函数TextField,还是有办法避免函数重构?
视图模型
class MyViewModel() : ViewModel() {
private val _nameFlow = MutableStateFlow("")
val nameFlow = _nameFlow.asStateFlow()
fun updateName(name: String) {
_nameFlow.value = name
}
}
Run Code Online (Sandbox Code Playgroud)
主要活动
class MainActivity : ComponentActivity() {
private val myViewModel by viewModels<MyViewModel>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AppArchitectureTheme {
HelloScreen(myViewModel)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
主屏幕
@Composable
fun HelloScreen(viewModel: MyViewModel) {
val name = viewModel.nameFlow.collectAsState()
HelloContent(
provideName = { …Run Code Online (Sandbox Code Playgroud)