HarmonyOSBaseLibs

徐勤民 150568746b 导航栏红点 10 tháng trước cách đây
src 150568746b 导航栏红点 10 tháng trước cách đây
.gitignore 6ef4ef6d27 init 1 năm trước cách đây
BuildProfile.ets 6d3e87a5ed 接口相关调整 10 tháng trước cách đây
CHANGELOG.md 6f24d6a1b4 sdk提审 10 tháng trước cách đây
Index.ets 82e14a060b 基础布局 10 tháng trước cách đây
LICENSE 096507cc42 接口请求 1 năm trước cách đây
README.md 21960cd2b4 SafeView 10 tháng trước cách đây
UTILS.md 6ef4ef6d27 init 1 năm trước cách đây
build-profile.json5 5abdbe53de release包 10 tháng trước cách đây
consumer-rules.txt 6ef4ef6d27 init 1 năm trước cách đây
hvigorfile.ts 6ef4ef6d27 init 1 năm trước cách đây
obfuscation-rules.txt 6ef4ef6d27 init 1 năm trước cách đây
oh-package.json5 bba0b2ed77 bug修复 11 tháng trước cách đây

README.md

基础开发工具包

ohpm install @szyx/sdk_base

1.utils

1.1.AppStorageHelper

缓存工具类,运行时存储,应用停止运行后清空

import { AppStorageHelper } from '@szyx/sdk_base/Index'

// 存储string数据
AppStorageHelper.save(StorageKeys.CLIENT_ID, d)

// 获取存储的strign数据
let d = AppStorageHelper.get(StorageKeys.CLIENT_ID)
// 删除指定存储
AppStorageHelper.delete(StorageKeys.CLIENT_ID)

1.2.PreferencesHelper

永久存储类,应用停止后也不会清空 需要验证,更新应用会不会被清理 可存储类型 number | string | boolean | Array<number> | Array<string> | Array<boolean> | Uint8Array

import { PreferencesHelper } from '@szyx/sdk_base/Index'

// 存储数据
PreferencesHelper.put(StorageKeys.CLIENT_ID, value)

// 获取存储的数据
PreferencesHelper.get(StorageKeys.CLIENT_ID).then(res => {
  console.log('>>>>>', res)
})
// 删除存储的数据
PreferencesHelper.delete(StorageKeys.CLIENT_ID).then(() => {
  console.log('>>>>>')
})

1.3.ToolsHelper

常用方法工具栏 基础方法

1.3.1.弹出Toast提示

import { ToolsHelper } from '@szyx/sdk_base';

ToolsHelper.showMessage('Hello Word!')

1.3.2.打印日志

打印格式:========>${顶层调用栈}::

import { ToolsHelper } from '@szyx/sdk_base';

ToolsHelper.log('Hello Word!')

1.3.3.获取调用栈第一个

import { ToolsHelper } from '@szyx/sdk_base';

ToolsHelper.getStackKey()

1.3.4.获取设备信息

import { ToolsHelper } from '@szyx/sdk_base';

ToolsHelper.getDeviceInfo()

1.4.ValidatorHelper

常用正则

1.4.1.验证手机号

import { ValidatorHelper } from '@szyx/sdk_base';

ValidatorHelper.isPhone('13800000000')

1.5.AlgorithmHelper

计算相关

1.5.1.验证手机号

import { AlgorithmHelper } from '@szyx/sdk_base';

AlgorithmHelper.calculateDistance(x1, y1, x2, y2)

1.6.XWebHelper

打开webview页面

import { XWebHelper } from '@szyx/sdk_base';

// 必须先引入,否则无法跳转
const XWebview = import('../pages/XWebview');

XWebHelper.openWeb({
  url: 'https://www.baidu.com',
  title: '百度一下',
})

2.Dialog

2.1.弹出list选中弹窗

import { XDialogController } from '../dialog/XDialogController';
import { XDialogList } from '../dialog/XDialogList';

@
Component
struct
MyView
{
  // 控制器,控制开关
  dialogController: XDialogController = {} as XDialogController

  build()
  {
    Column()
    {
      Button
      ({ buttonStyle: ButtonStyleMode.TEXTUAL })
      {
        Image($r('sys.media.ohos_ic_public_more'))
          .width(26).height(26)
      }
      .
      width(65)
        .onClick(() => {
          if (this.dialogController != null) {
            this.dialogController.open()
          }
        })

      XDialogList({
        // 控制器
        controller: this.dialogController,
        // 标题(可选)
        title: '选择您的操作',
        // 选择内容列表
        values: ['刷新', '浏览器打开', '分享', '复制地址'],
        // 用户选择事件
        onSelected: (index: number, value: string) => {
          ToolsHelper.showMessage(`用户选择了第${index}个,内容为:${value}`)
        },
        // 用户取消事件
        onCancel: () => {
          ToolsHelper.showMessage('用户取消操作')
        },
        // 是否可取消(点击空白处,或者物理返回键)
        autoCancel: true
      })

    }
    .
    width('100%').height('100%')
  }
}

3.网络请求

使用时建议二次封装

参数定义

> /**
> * 
> * @param url url地址
> * @param data 请求参数
> * @param headers 请求头
> * @param apiNo 请求标识,取消请求或者去重使用|考虑做自动重试使用
> * @returns
>   */
> ```

### 3.1.get请求

typescript

HttpHelper.get() .get>(url.url.startsWith('http') ? url.url : GlobalValue.getInstance().envUrl + url.url,

data ? JSON.stringify(data) : undefined, {
  userId: GlobalValue.getInstance().userId,
  clientId: GlobalValue.getInstance().getClientId(),
  version: ConstantValue.VERSION,
  deviceType: '01',
  timeStamp: timeStamp + '',
  sign: sign,
  phoneModel: 'sign',
  phoneVersion: 'sign',
  phoneBrand: 'HarmonyOS'
}, url.apiNo)

.then((res: HttpResult) => {

if (res.status === '0') {
  resolve(res.data as T)
} else {
  reject(new Error(res.message))
}

}) .catch((error: Error) => {

reject(error)

})


### 3.2.postJson

typescript

HttpHelper.get() .post>(url.url.startsWith('http') ? url.url : GlobalValue.getInstance().envUrl + url.url,

data ? JSON.stringify(data) : undefined, {
  userId: GlobalValue.getInstance().userId,
  clientId: GlobalValue.getInstance().getClientId(),
  version: ConstantValue.VERSION,
  deviceType: '01',
  timeStamp: timeStamp + '',
  sign: sign,
  phoneModel: 'sign',
  phoneVersion: 'sign',
  phoneBrand: 'HarmonyOS'
}, url.apiNo)

.then((res: HttpResult) => {

if (res.status === '0') {
  resolve(res.data as T)
} else {
  reject(new Error(res.message))
}

}) .catch((error: Error) => {

reject(error)

})


## 4.[自定义view](./src/main/ets/view)

### 4.1.[LoadingView](./src/main/ets/view/LoadingView.ets)

> 封装了loading的根布局

tsx import { LoadingView } from '@szyx/sdk_base'

@State isLoading: boolean = false

build() {

Stack() {
    LoadingView({ isLoading: this.isLoading }) {
        Column() {
            Text('正常布局')
        }
        .width('100%')
            .height('100%')
    }
}

}


### 4.2.[SafeView](./src/main/ets/view/SafeView.ets)

> 基础布局

tsx import { SafeView } from '@szyx/sdk_base'

@State isLoading: boolean = false

build() {

SafeView({
  isLoading: this.isLoading,
  titleText: '注册',
  onClickLeft:{img:$r("app.media.base_back"),
    onClick:()=>{}
  },
  onClickRight:{
    text:'添加',
    color:'#ff1d9999',
    onClick:()=>{}
  }
}){
// 自己的布局
}

}


## 5.[Windows](./src/main/ets/utils/WindowHelper.ets)

### 5.1.弹出自定义窗口

> 弹出自定义窗口

tsx import { WindowHelper } from '@szyx/sdk_base'

WindowHelper.open({

name: '登录弹窗',
router:'login'

})

WindowHelper.close()


### 5.2.设置沉浸式相关

tsx // 初始化 import { WindowHelper } from '@szyx/sdk_base'; export default class AppAbility extends UIAbility {

onWindowStageCreate(windowStage: window.WindowStage): void {

    windowStage.loadContent('pages/Index', (err) => {
        if (err.code) {
            hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
            return;
        }
        WindowHelper.windowClass = windowStage.getMainWindowSync()
    });
    GlobalContext.setContext(this.context)
}

}


tsx // 需要的界面 // 设置是否全屏 WindowHelper.setWindowLayoutFullScreen(true)

// 隐藏状态栏 WindowHelper.hideStatusBar()

// 显示状态栏 WindowHelper.showStatusBar()

// 顶部安全区高度 WindowHelper.topRectHeight()

// 底部安全区高度 WindowHelper.bottomRectHeight() ```

**** 常见问题