使用 mvvm 和 jetpackcompose 在 android 中查看模型

问题描述 投票:0回答:1

我是 MVVM 新手,正在尝试创建一个应用程序。

该应用程序有 4 个不同的部分: 个人资料(登录 - 编辑个人资料等) 类别(显示猫和子猫) 项目(显示所有项目、单个项目页面、搜索等) 收藏夹(收藏夹列表、添加收藏夹、删除收藏夹)

我的问题是,如何使用 jetpack compose 导航 UI? 我是否需要一个主要活动和一个处理整个应用程序页面的导航器 或者 我需要创建 4 个具有 4 个不同视图模型的 Activity 来进行切换吗?

拥有 4 个不同的存储库并将它们全部收集在一个大视图模型中是否理想?

另外,我如何设法查看模型的生命周期,它们是否应该存在于活动内?

android kotlin mvvm android-jetpack-compose viewmodel
1个回答
0
投票

对于导航,您可以使用 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

© www.soinside.com 2019 - 2024. All rights reserved.