HarmonyOS 修改变量值
下列方法中data的值始终为{},该怎么修改:
getUserInfo(): string {
let data = '{}'
PreferenceUtil.readBoolean(PreferenceKey.Key_Login, false).then((isLogin: boolean) => {
if (isLogin) {
PreferenceUtil.readModel<UserInfo>(PreferenceKey.Key_User_Info).then((userInfo) => {
if (userInfo != null) {
data = JSON.stringify(userInfo)
}
})
} else {
data = '{}'
}
})
return data
}
PreferenceUtil代码如下:
import dataPreferences from '@ohos.data.preferences'
import common from '@ohos.app.ability.common'
import { Constant } from '../constant/Constant'
import { Logger, StrUtil } from '@yunkss/eftool'
let preference: dataPreferences.Preferences
const context = getContext(this) as common.UIAbilityContext
let TAG: string = 'PreferenceUtil'
/**
* 持久化存储数据
* 使用方式1:PreferenceUtil.readModel<UserLoginDTO>(PreferenceKey.USER_INFO).then((userInfo: UserLoginDTO) => {
Logger.d('userId:'+userInfo.userId)
})
*使用方式2:let userInfo = await PreferenceUtil.readModel<UserLoginDTO>(PreferenceKey.USER_INFO)
* Logger.d('userId:'+userInfo.userId)
*/
export class PreferenceUtil {
static async writeString(key: string, value?: string) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
try {
await preference.put(key, value)
} catch (e) {
Logger.error(TAG, 'Failed to write value, cause:' + e)
}
await preference.flush()
}
static async readString(key: string, defaultValue?: string) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
let value: string = ''
try {
value = await preference.get(key, defaultValue).then()
} catch (e) {
Logger.error(TAG, 'Failed to read value, cause:' + e)
}
return value
}
static async writeNumber(key: string, value?: number) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
try {
await preference.put(key, value)
} catch (e) {
Logger.error(TAG, 'Failed to write value, cause:' + e)
}
await preference.flush()
}
static async readNumber(key: string, defaultValue?: number) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
let value: number = 0
try {
value = await preference.get(key, defaultValue).then()
} catch (e) {
Logger.error(TAG, 'Failed to read value, cause:' + e)
}
return value
}
static async writeBoolean(key: string, value?: boolean) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
try {
await preference.put(key, value)
} catch (e) {
Logger.error(TAG, 'Failed to write value, cause:' + e)
}
await preference.flush()
}
static async readBoolean(key: string, defaultValue?: boolean) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
let value: boolean = false
try {
value = await preference.get(key, defaultValue).then()
} catch (e) {
Logger.error(TAG, 'Failed to read value, cause:' + e)
}
return value
}
static async writeModel<T>(key: string, value?: T) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
try {
await preference.put(key, JSON.stringify(value))
} catch (e) {
Logger.error(TAG, 'Failed to write value, cause:' + e)
}
await preference.flush()
}
static async readModel<T>(key: string) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
let value: string = ''
try {
value = await preference.get(key, '').then()
} catch (e) {
Logger.error(TAG, 'Failed to read value, cause:' + e)
}
if (StrUtil.isEmpty(value)) {
return null
} else {
return JSON.parse(value) as T
}
}
static async delete(key: string) {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
try {
await preference.delete(key).then()
} catch (e) {
Logger.error(TAG, 'Failed to delete, cause:' + e)
}
}
static async clear() {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
try {
await preference.clear().then()
} catch (e) {
Logger.error(TAG, 'Failed to clear, cause:' + e)
}
}
static async flush() {
if (preference == null) {
await PreferenceUtil.getPreferences()
}
try {
await preference.flush().then()
} catch (e) {
Logger.error(TAG, 'Failed to flush, cause:' + e)
}
}
private static async getPreferences() {
try {
preference = await dataPreferences.getPreferences(context, Constant.Preference_Name)
} catch (e) {
Logger.error(TAG, 'Failed to get preferences, cause:' + e)
}
}
/* private static async deletePreferences() {
try {
await dataPreferences.deletePreferences(context, Constant.Preference_Name)
} catch (e) {
}
preference=null
}*/
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
@State 修饰的变量值改变,界面不刷新
2994浏览 • 1回复 待解决
如何动态查看代码运行时变量值?
1557浏览 • 1回复 待解决
如何监听Viewmodel里变量值的变化
2847浏览 • 1回复 待解决
父组中变量值改变,如何让子组件中的值跟着一起变化?
1589浏览 • 2回复 待解决
HarmonyOS 子组件如何向父组件单向传递状态变量值
745浏览 • 1回复 待解决
使用@LocalStorageProp修饰的变量,当子组件中的变量值变了,@Entry页面中的值没有发生变化。
1367浏览 • 1回复 待解决
HarmonyOS 多层级的变量改变怎么同步修改到UI中
994浏览 • 1回复 待解决
backgroud()方法使用@State修饰的状态变量值更新后未能触发不同的@builder方法刷新
3319浏览 • 1回复 待解决
HarmonyOS 组件状态变量改变,build重绘问题
1000浏览 • 1回复 待解决
HarmonyOS 外部类方法如何改变组件状态变量
729浏览 • 1回复 待解决
在OceanBase中,如何修改会话变量设置?
5155浏览 • 1回复 待解决
HarmonyOS Text如何实现根据变量字符改变text中对应字符指定颜色
834浏览 • 1回复 待解决
HarmonyOS 在定时器里面改变@state修饰的变量,无法更新UI吗?
1161浏览 • 1回复 待解决
HarmonyOS @Builder方法中去修改@State变量不会通知到其他view
885浏览 • 1回复 待解决
为什么直接修改@LocalStorageProp绑定的变量不会同步到LocalStorage?
542浏览 • 0回复 待解决
#鸿蒙学习大百科#当@LocalStorageLink装饰的变量改变时,框架的行为是什么?
1234浏览 • 1回复 待解决
#鸿蒙学习大百科#当@StorageLink装饰的变量改变时,框架的行为是什么?
1502浏览 • 1回复 待解决
HarmonyOS 使用@State定义的成员变量,当它的值改变时,一定会刷新对应的UI吗?
899浏览 • 1回复 待解决
#鸿蒙学习大百科#当@StorageProp装饰的变量改变时,框架的行为是什么?
1296浏览 • 1回复 待解决
在自定义组件Page的build方法里改变状态变量会造成什么影响?
1371浏览 • 1回复 待解决
HarmonyOS 如何改变this指向
601浏览 • 1回复 待解决
如何将界面上的状态变量传给服务层,在服务层修改状态变量对象的属性刷新页面
1525浏览 • 1回复 待解决
UI界面中用@state绑定的变量,在逻辑代码中class中做了修改,怎么在UI界面察觉到这个@state变量发生了变化
2620浏览 • 1回复 待解决
HarmonyOS 图片颜色改变API
793浏览 • 1回复 待解决
里外都是异步的return的位置需要调整一下: