鸿蒙服务卡片,点击事件,传值

用来显示或者提示一些基本信息,或进行一些基本操作,不能使用重逻辑

新建:1、在ets目录上右击;2、选择Service Widget;3、Dynamic Widget

其中Static Widget,只能做静态页面,不能做数据交互

Dynamic Widget可以做动态数据,及事件处理

在entry的model.json5中,

复制代码
 "extensionAbilities": [
      {
        "name": "EntryFormAbility",
        "srcEntry": "./ets/entryformability/EntryFormAbility.ets",
        "label": "$string:EntryFormAbility_label",
        "description": "$string:EntryFormAbility_desc",
        "type": "form",
        "metadata": [
          {
            "name": "ohos.extension.form",
            "resource": "$profile:form_config"
          }
        ]
      }
    ]

就是的ability,在这个ability上,就是卡片

在EntryFormAbility中,最主要的方法:onAddForm(),就是做主要的逻辑处理

在Resources / base / profile / form_config.json中,就是卡片的配置

复制代码
{
  "forms": [
    {
      "name": "widget",
      "displayName": "$string:widget_display_name",
      "description": "$string:widget_desc",
      "src": "./ets/widget/pages/WidgetCard.ets",
      "uiSyntax": "arkts",
      "window": {
        "designWidth": 720,
        "autoDesignWidth": true
      },
      "colorMode": "auto",
      "isDynamic": true,
      "isDefault": true,
      "updateEnabled": false,
      "scheduledUpdateTime": "10:30",
      "updateDuration": 1,
      "defaultDimension": "2*2",
      "supportDimensions": [
        "2*2",
        "2*4"
      ]
    }
  ]
}

卡片可以选择2*2和2*4

作用:展示数据、唤起应用;不支持包、不支持网络请求;

在应用的model.json5中,加入权限

复制代码
    'requestPermissions': [{
      "name": 'ohos.permission.KEEP_BACKGROUND_RUNNING'
    }],
复制代码
WidgetCard.ets
复制代码
@Entry
@Component
struct WidgetCard {
  @State num: number = 0

  build() {
    Row() {
      Column() {

        Button(this.num + '++').onClick(() => {
          this.num++
          postCardAction(this, {
            action: 'call',
            abilityName: 'EntryAbility',
            params:{
              method:'updataNum',
              num:this.num
            }
          });
        })
      }.width('100%')
    }
    .height('100%')
    .onClick(() => {
      postCardAction(this, {
        action: 'router', //跳转事件
        abilityName: 'EntryAbility',

      });
    })
  }
}

应用的界面:

复制代码
import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { promptAction } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  @StorageLink('num')
  num:number=0

  build() {
    RelativeContainer() {
      Text(this.message+this.num)
    }
    .height('100%')
    .width('100%')
  }


}
复制代码
EntryAbility.ets
复制代码
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import { rpc } from '@kit.IPCKit';

class Params implements rpc.Parcelable{
  marshalling(dataOut: rpc.MessageSequence): boolean {
    return true
  }

  unmarshalling(dataIn: rpc.MessageSequence): boolean {
    return true
  }

}

class CaraParam{
  num:number=0
}

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');

    this.callee.on('updataNum',(data)=>{
      let res=JSON.parse(data.readString())as CaraParam
      AppStorage.setOrCreate('num',res.num)
      return new Params()
    })
  }

//销毁监听
  onDestroy(): void {
    this.callee.off('updataNum')
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
  }
相关推荐
行者-全栈开发3 小时前
【共创稿事节】HarmonyOS 7 空间音频实战:用 AudioSpatializationManager 构建“听得见方位“的声场
harmonyos·arkts·鸿蒙·空间音频·api 26·audio kit
马剑威(威哥爱编程)3 小时前
【共创稿事节】HarmonyOS 7 Agent 开发实战 03:Tool Calling 让 AI 查实时订单与库存
华为·harmonyos
倔强的石头1065 小时前
把 Typst 搬上开源鸿蒙 PC:一次“干净”的移植记录
华为·开源·harmonyos
梦想不只是梦与想7 小时前
鸿蒙 预览数据模拟:Hamock
harmonyos·模拟数据·hamock
贾伟康10 小时前
【化学实验室|04】HarmonyOS ArkTS 场景选择器实战:让 13 个离线实验的入口、筛选和返回路径保持一致
harmonyos·arkts·canvas·arkui·化学实验
特立独行的猫a11 小时前
仓颉语言GUI开发实战:用仓颉写串口/网络二合一调试助手
网络·ui·gui·harmonyos·tauri·仓颉
hqzing20 小时前
把 glibc 移植到鸿蒙 PC 上:它能用来做什么
华为·harmonyos
OH_TPC1 天前
HarmonyOS APP开发---“习惯猫“习惯打卡App,需要用到这个库
华为·harmonyos·鸿蒙
熊猫钓鱼>_>1 天前
开源鸿蒙平台 KMP 三方库 kotlin-csv 适配全流程:从编码假设到沙箱真机互通验证
开发语言·人工智能·华为·kotlin·harmonyos·鸿蒙
马剑威(威哥爱编程)1 天前
【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集
华为·harmonyos