doubleyong
管理员
管理员
  • 最后登录2025-02-06
  • 发帖数1196
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:443回复:0

Harmoney Next中首选项的使用方法

楼主#
更多 发布于:2024-11-12 11:41
Harmony Next的正式版本发布,也就是Harmony OS5. 对应的首选项使用方法也不同了. 下面共享一份项目中用到的首选项的封装与使用.

封装首选项的代码:
import data_preferences from '@ohos.data.preferences';
import { BusinessError } from '@ohos.base';
const PREFERENCES_NAME = "PREFERENCES_NAME" //首选项名称
/**
 * 首选项工具类:key只能是字符串类型,value类型:number | string | boolean | Array<number> | Array<string> | Array<boolean>;
 *
 */
export class PreferencesManager {
  private static localDataManager: PreferencesManager;
  static instance() {
    if (!PreferencesManager.localDataManager) {
      PreferencesManager.localDataManager = new PreferencesManager();
    }
    return PreferencesManager.localDataManager;
  }
  put(context: Context, key: string, value: data_preferences.ValueType) {
    let preferences = data_preferences.getPreferences(context, PREFERENCES_NAME);
    preferences.then((res) => {
      res.put(key, value).then(() => {
        res.flush();
      }).catch((err: BusinessError) => {
      });
    })
  }
  get(context: Context, key: string, callback: Function) {
    let preferences = data_preferences.getPreferences(context, PREFERENCES_NAME);
    preferences.then((res) => {
      res.get(key, undefined).then((value) => {
        callback(value)
      }).catch((err: BusinessError) => {
        callback(undefined)
      });
    });
  }
  delete(context: Context, key: string) {
    let preferences = data_preferences.getPreferences(context, PREFERENCES_NAME);
    preferences.then((res) => {
      res.delete(key).then((value) => {
      });
    });
  }
  clear(context: Context) {
    let preferences = data_preferences.getPreferences(context, PREFERENCES_NAME);
    preferences.then((res) => {
      res.clear().then((value) => {
      });
    });
  }
}

存数据到首选项
import {PreferencesManager} from './../Common/PreferencesUtils'
//给首选项添加数据
PreferencesManager.instance().put(getContext(this),'user','123')


从首选项取数据
import {PreferencesManager} from './../Common/PreferencesUtils'
aboutToAppear(): void {
  PreferencesManager.instance().get(getContext(this),'user',(val: preferences.ValueType) => {
    if(!val){ //没有值,跳到登录页
      router.pushUrl({url:"pages/Login"})
    }
    //console.info("Succeeded in getting value of 'startup'. val: " + val);
  })
}
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号