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 修饰的变量值改变,界面不刷新
1606浏览 • 1回复 待解决
如何监听Viewmodel里变量值的变化
1988浏览 • 1回复 待解决
如何动态查看代码运行时变量值?
702浏览 • 1回复 待解决
父组中变量值改变,如何让子组件中的值跟着一起变化?
524浏览 • 2回复 待解决
backgroud()方法使用@State修饰的状态变量值更新后未能触发不同的@builder方法刷新
2260浏览 • 1回复 待解决
使用@LocalStorageProp修饰的变量,当子组件中的变量值变了,@Entry页面中的值没有发生变化。
416浏览 • 1回复 待解决
HarmonyOS 多层级的变量改变怎么同步修改到UI中
70浏览 • 1回复 待解决
HarmonyOS 外部类方法如何改变组件状态变量
43浏览 • 1回复 待解决
在OceanBase中,如何修改会话变量设置?
4460浏览 • 1回复 待解决
HarmonyOS 在定时器里面改变@state修饰的变量,无法更新UI吗?
102浏览 • 1回复 待解决
#鸿蒙学习大百科#当@LocalStorageLink装饰的变量改变时,框架的行为是什么?
304浏览 • 1回复 待解决
#鸿蒙学习大百科#当@StorageLink装饰的变量改变时,框架的行为是什么?
402浏览 • 1回复 待解决
#鸿蒙学习大百科#当@StorageProp装饰的变量改变时,框架的行为是什么?
280浏览 • 1回复 待解决
在自定义组件Page的build方法里改变状态变量会造成什么影响?
480浏览 • 1回复 待解决
HarmonyOS 图片颜色改变API
23浏览 • 1回复 待解决
如何将界面上的状态变量传给服务层,在服务层修改状态变量对象的属性刷新页面
662浏览 • 1回复 待解决
UI界面中用@state绑定的变量,在逻辑代码中class中做了修改,怎么在UI界面察觉到这个@state变量发生了变化
1768浏览 • 1回复 待解决
HarmonyOS 如何改变光标位置
383浏览 • 1回复 待解决
HarmonyOS如何动态改变图标
553浏览 • 1回复 待解决
HarmonyOS IDE能否监听到State状态变量是在什么地方修改的,类似代码插桩能力
334浏览 • 1回复 待解决
interface类型的变量,变量 param 被声明为类型为 AnimateCallback 的变量
1764浏览 • 1回复 待解决
使用@State修饰的数组对象,改变其中的某个对象的变量,自定义组件中的UI没有跟着刷新
874浏览 • 1回复 待解决
HarmonyOS 如果有个sendable的class里面有个属性变量,类型是interface需要外部传入该怎么修改
59浏览 • 1回复 待解决
里外都是异步的return的位置需要调整一下: