2024年Android Compose 新闻App(二)ViewModel、Hlit、数据流,2024年最新ios音视频面试内容

本文介绍了如何通过系统化的学习路径,从基础的Flutter入门到进阶,涉及Hilt依赖的添加、ViewModel的使用以及Compose组件的结合。同时强调了知识体系对技术提升的重要性,提供了一份全面的学习资料和加入技术交流社群的机会。
摘要由CSDN通过智能技术生成
最后笔者收集整理了一份Flutter高级入门进阶资料PDF

以下是资料目录和内容部分截图



里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    • ① 添加Hilt依赖
  • ②添加ViewModel依赖

  • 二、Hilt使用

  • 三、ViewModel使用

  • 四、数据流

  • 五、源码

前言

===============================================================

在上一篇文章中我们构建了网络框架了,现在可以在页面中通过liveData的Observe回调中看到网络数据的返回。

正文

===============================================================

Compose组件和Jetpack中其他的组件可以很有效的结合起来,会使我们的程序解耦的更彻底。下面来使用它们吧

一、添加依赖


添加依赖有两个部分,一个是Hilt的,一个是ViewModel。

① 添加Hilt依赖

首先是在项目的build.gradle中,先定义Hilt的版本。

hilt_version = ‘2.38.1’

然后添加插件依赖:

dependencies {

classpath “com.google.dagger:hilt-android-gradle-plugin:$hilt_version”

}

添加位置如下图所示:

在这里插入图片描述

下面是在app的build.gradle中的配置:在顶部plugins{}闭包中添加:

id ‘kotlin-kapt’

id ‘dagger.hilt.android.plugin’

在这里插入图片描述

这里增加hilt插件。然后在dependencies{}闭包中添加如下依赖:

implementation “com.google.dagger:hilt-android:$hilt_version”

kapt “com.google.dagger:hilt-android-compiler:$hilt_version”

如下图所示:

在这里插入图片描述

至此我们Hilt依赖添加完毕。

②添加ViewModel依赖

下面我们添加ViewModel的依赖,其实主要就是对于在Compose使用ViewModel的增强,依赖如下:

implementation ‘androidx.lifecycle:lifecycle-extensions:2.2.0’

implementation “androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1”

implementation “androidx.lifecycle:lifecycle-livedata-ktx:2.4.1”

implementation “androidx.lifecycle:lifecycle-viewmodel-compose:2.4.1”

implementation “androidx.compose.runtime:runtime-livedata:$compose_version”

添加位置如下:

在这里插入图片描述

最后Sync Now,同步一下,然后你最好运行一下,先保证你添加的依赖没有问题,你再继续后面的开发比较好。

二、Hilt使用


使用Hilt第一步就是添加@HiltAndroidApp注解,

在这里插入图片描述

这里的App类在上一篇文章中就已经写好了。然后我们定义EpidemicNewsRepository的作用域为@ViewModelScoped,并且注入。

在这里插入图片描述

定义了EpidemicNewsRepository在ViewModel中使用,下面在com.llw.goodnews包下新建viewmodel包,包下新建一个MainViewModel类,代码如下:

@HiltViewModel

class MainViewModel @Inject constructor(

repository: EpidemicNewsRepository

) : ViewModel() {

结语

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是目录截图:

由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。

再附一部分Android架构面试视频讲解:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常感谢您的提问!在Android Compose中,我们使用ViewModel来存储和管理数据,因此在两个不同的Compose页面之间传递数据,您可以通过以下步骤实现: 1. 创建一个ViewModel类,它将保存您要在页面之间传递的数据。 ``` import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.ViewModel class MyViewModel : ViewModel() { var text by mutableStateOf("我是默认值") } ``` 2. 在第一个Compose页面中,您可以使用`rememberViewModel()`创建ViewModel实例,并调用`viewModel.text`更改存储在ViewModel中的文本。 ``` import androidx.compose.foundation.layout.Column import androidx.compose.material.Button import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.getValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewmodel.compose.viewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @Composable fun Page1() { val viewModel: MyViewModel = viewModel() Column { Text(text = viewModel.text) Button(onClick = { viewModel.text = "我是来自页面1的数据" }) { Text("更改数据") } } } ``` 3. 您可以在第Compose页面中复制第一步,并使用`viewModel()`在该页面中获取前面创建的ViewModel实例。 您可以在此页面中使用存储在ViewModel中的文本。 ``` @Composable fun Page2() { val viewModel: MyViewModel = viewModel() Column { Text(text = viewModel.text) Button(onClick = { viewModel.text = "我是来自页面2的数据" }) { Text("更改数据") } } } ``` 通过这些步骤,我们已经创建了一个ViewModel并在两个Compose页面之间传递数据。同时,这个ViewModel的实例在页面之间共享,因此您可以在ViewModel中存储任何数据,并在Compose页面之间通信。 希望这个示例能够帮助您解决您的问题,如果您还有其他问题,请随时与我联系!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值