Compose: nowinandroid 项目学习

761 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

最近这些天基本是连续的在更文,不管有没有阅读和收藏,在写的过程中,让我对compose的一些细节有了更深入的了解。文章中的例子都是自己亲自去尝试的,虽然例子都是很简单的例子,但是在写的过程中还是学了很多东西,今天我们来了解一下nowinandroid的项目。noinandroid是官方推荐的一个compose的例子。先看一下noinandroid运行起来是一个什么样子:

Screen Shot 2022-12-06 at 8.36.59 PM.png 第一个页面是选择一些你喜欢的topic,选择好之后点击“Done”按钮就进入主界面了:

Screen Shot 2022-12-06 at 8.38.46 PM.png 这是一个list,可以上下滚动。最下面就是导航栏。感兴趣的话可以自己下载下来玩一玩。

下面看看nowinandroid里面的代码目录结构:

Screen Shot 2022-12-06 at 8.49.37 PM.png

  • App:包里面主要就是应用的入口部分,是整个app的最上层的部分
  • core:里面就是一些基础的业务,数据库,datastore,公共UI,network接口以及一些其他基础组件
  • feature:这一部分就是各个module部分的实现。

先说入口部分,入口的部分就在:app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt,这个里面主要就是使用 Scaffold来构建整个界面。在content里面使用navigation作为页面跳转:

fun NiaNavHost(
    navController: NavHostController,
    onBackClick: () -> Unit,
    modifier: Modifier = Modifier,
    startDestination: String = forYouNavigationRoute
) {
    NavHost(
        navController = navController,
        startDestination = startDestination,
        modifier = modifier,
    ) {
        forYouScreen()
        bookmarksScreen()
        interestsGraph(
            navigateToTopic = { topicId ->
                navController.navigateToTopic(topicId)
            },
            navigateToAuthor = { authorId ->
                navController.navigateToAuthor(authorId)
            },
            nestedGraphs = {
                topicScreen(onBackClick)
                authorScreen(onBackClick)
            }
        )
    }
}

这个里面包含了各个页面的定义以及页面跳转的响应。 今天先到这里吧,感觉自己看的也很粗,没有看到很细节的地方,后面仔细研究了,再把各个细节写出来吧。