
#HarmonyOS NEXT体验官#HarmoneyOS NEXT应用开发实战《实现持久化搜索记录》 原创
每一个app都必须有的功能是什么呢?最常用的功能又是什么呢?
没错,就是我们的搜索功能,有了搜索功能输入关键字即可触达相应区域,不管是工作还是娱乐, 效率都大大提高
那么想要在鸿蒙中实现一个完整的搜索模块我们应该怎么做呢?
跟上我的节奏,阅读此文,轻松掌握搜索模块开发
话不多说,让我们有请今天的主角登场
上图就是我们的搜索模块,图中可以看出搜索模块由
返回图标、文本输入框、搜索按钮、搜索历史列表、列表删除、条目删除这几个功能点构成
搜索历史列表是要常驻的,我们的页面开启和关闭,信息都要保存起来,用户下次打开可以直接渲染,直接点击即可搜索
列表删除同时还会弹出一个用户提示弹窗,确认后清空列表(如下图所示)
返回图标、文本输入框、搜索按钮的实现我们使用ROW容器包裹对应组件,实现如下
输入框的内容我们定义一个@State value:string=''来进行监听。
接下来是列表的实现,列表的组件我们使用ArkUI提供的 list组件,数据源我们定义一个空的数组 @State txtList:string[]=[]当我们点击搜索按钮时,把我们刚才定义的value 通过 this.txtList.push(this.value)的方式添加进数组中。添加完成之后把数据展示到list组件上,这样我们记录的ui显示就做好了,但是我们关掉app再次打开,刚才添加的数据就不见了,这时候我们就要用到第二个知识点
向大家隆重介绍鸿蒙的轻量级存储,用户首选项(Preferences)
什么是用户首选项
提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户希望有一个全局唯一存储的地方,可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据,当需要持久化时可以使用flush接口将内存中的数据写入持久化文件中。Preferences会随着存放的数据量越多而导致应用占用的内存越大,因此,Preferences不适合存放过多的数据,也不支持通过配置加密,适用的场景一般为应用保存用户的个性化设置(字体大小,是否开启夜间模式)等
用户首选项运作机制
我们使用用户首选项的保存方法,把我们的数组存储进去因为接收的参数是string类型所以我们要转换一下存储
dataPreferences.putSync('startup', txtList.toString());
这样我们的数据就会实现持久化保存,app不管怎么打开关闭都不怕了
取出数据使用如下方法
let val = dataPreferences.getSync('startup');我们通过key 把存入的数据取出,转换后赋值给list ,这样我们就可以加载历史数据显示到List组件上了
小tips:可以看到我们的列表比较简单并且条目只有一个文本,所以可以不需要@build 进行分离
实现如下
弹窗的实现我们需要用到鸿蒙的自定义弹窗(代码如下)
我们在弹窗中定义了confirm?: () => void那我们在组件中调用弹窗时使用如下代码
我们只需要在onAccept方法中把txtList清空就好了
这样我们的持久化搜索记录功能就实现了
