我是 MVVM 新手,正在尝试创建一个应用程序。
该应用程序有 4 个不同的部分: 个人资料(登录 - 编辑个人资料等) 类别(显示猫和子猫) 项目(显示所有项目、单个项目页面、搜索等) 收藏夹(收藏夹列表、添加收藏夹、删除收藏夹)
我的问题是,如何使用 jetpack compose 导航 UI? 我是否需要一个主要活动和一个处理整个应用程序页面的导航器 或者 我需要创建 4 个具有 4 个不同视图模型的 Activity 来进行切换吗?
拥有 4 个不同的存储库并将它们全部收集在一个大视图模型中是否理想?
另外,我如何设法查看模型的生命周期,它们是否应该存在于活动内?
对于导航,您可以使用 Jetpack Compose Navigation 在主要活动中定义屏幕和导航图
您可以拥有
ProfileViewModel
、CategoriesViewModel
、ItemsViewModel
和 FavoritesViewModel
。他们所有人都应该只执行特定屏幕指定的任务。
理想情况下,ViewModels
应该有一个与其各自的 UI 组件相关联的生命周期。对于活动,您可以创建并使用活动生命周期范围内的视图模型。
代码:
@Composable
fun MyApp() {
val navController = rememberNavController()
NavHost(navController, startDestination = "profile") {
composable("profile") {
val viewModel: ProfileViewModel = viewModel()
ProfileScreen(navController, viewModel)
}
composable("categories") {
val viewModel: CategoriesViewModel = viewModel()
CategoriesScreen(navController, viewModel)
}
// Define other screens here
}
}
class ProfileViewModel : ViewModel() {
// Profile-related data and logic
}
class CategoriesViewModel : ViewModel() {
// Categories-related data and logic
}
@Composable
fun ProfileScreen(navController: NavController, viewModel: ProfileViewModel) {
// Profile screen UI
}
@Composable
fun CategoriesScreen(navController: NavController, viewModel: CategoriesViewModel) {
// Categories screen UI
}
更多信息链接 - https://developer.android.com/codelabs/basic-android-kotlin-compose-navigation#0