我在堆栈溢出的某个地方读到过-
如果您正在创建新应用程序,则可以完全跳过使用 Fragment
只需使用可组合函数来表示您的屏幕即可。
但是,在使用片段时,我们可以针对不同的片段/屏幕使用不同的视图模型。我们可以通过可组合函数实现相同的目标吗?例如单个活动、不同屏幕的不同可组合函数以及不同可组合函数的不同视图模型?如果是,这是理想的方法?
但是,在使用片段时,我们可以为不同的片段/屏幕使用不同的视图模型。
在 Compose 中,您可以使用可组合函数来显示屏幕 - 不再需要使用片段。
我们可以通过可组合函数实现相同的目标吗?例如单个活动、针对不同屏幕的不同可组合函数以及针对不同可组合函数的不同视图模型?
如果需要,您可以将不同的 ViewModel 用于不同的可组合函数。您可以这样做:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
DifferentViewModels()
}
}
}
@Composable
fun DifferentViewModels() {
Column {
FirstComposable()
SecondComposable()
}
}
@Composable
fun FirstComposable(firstViewModel: FirstViewModel = viewModel()) {
Text(firstViewModel.value)
}
@Composable
fun SecondComposable(secondViewModel: SecondViewModel = viewModel()) {
Text(secondViewModel.value)
}
class FirstViewModel() : ViewModel() {
val value = "Value from the first View Model"
}
class SecondViewModel() : ViewModel() {
val value = "Value from the second View Model"
}
确保在 build.gradle(Module) 文件中添加 ViewModel 依赖项:
// Compose ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07"
如果是,这是理想的方法吗?
这取决于您的项目要求。如果您有不同的大屏幕,需要存储许多不同的值并且不需要与不同的屏幕共享它们,则可以为它们使用不同的 ViewModel。
如果屏幕很小和/或您需要在它们之间共享值,则共享一个 ViewModel 将是一种方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)