[文章]ArkTS语言HarmonyOS/OpenHarmony应用开发-message事件刷新卡片内容

阅读量0
0
0

开发过程

在卡片页面中可以通过postCardAction接口触发message事件拉起FormExtensionAbility,然后由FormExtensionAbility刷新卡片内容。
图片7.png

common:公共文件

通过点击button按钮,刷新卡片内容。代码示例:

WidgetCard.ets

**let storage = new LocalStorage();**

@Entry(storage)
@Component
struct WidgetCard {
  @LocalStorageProp('title') title: string = 'title';
  @LocalStorageProp('content') detail: string = 'content';
  @LocalStorageProp('img') img: string = '/common/img/1.jpg';

  build() {
    Column() {
      Image(this.img).width(50).height(50)
      Text(`${this.title}`)
      Text(`${this.detail}`)
      Button('刷新**').type(ButtonType.Capsule).height(20).margin({top:10})**
        .onClick(() => {
          postCardAction(this, {
            'action': 'message',
            'params': {
              'msg': 'refresh'
            }
          });
        })

    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }
}

onFormEvent中主动刷新

EntryFormAbility.ts

**import formInfo from '@ohos.app.form.formInfo';**
import formBindingData from '@ohos.app.form.formBindingData';
import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
import formProvider from '@ohos.app.form.formProvider';


export default class EntryFormAbility extends FormExtensionAbility {
  onAddForm(want) {
    // Called to return a FormBindingData object.
    let formData = {};
    return formBindingData.createFormBindingData(formData);
  }

  onCastToNormalForm(formId) {
    // Called when the form provider is notified that a temporary form is successfully
    // converted to a normal form.
  }

  onUpdateForm(formId) {
    // Called to notify the form provider to update a specified form.
  }

  onChangeFormVisibility(newStatus) {
    // Called when the form provider receives form events from the system.
  }

  onFormEvent(formId, message) {
    // Called when a specified message event defined by the form provider is triggered.
    let formData = {
      'title': '标题**',**
      'content': '内容**',**
      'img': '/common/img/2.jpg',
    };
    let formInfo = formBindingData.createFormBindingData(formData)
    formProvider.updateForm(formId, formInfo).then((data) => {
      console.info('FormAbility updateForm success.' + JSON.stringify(data));
    }).catch((error) => {
      console.error('FormAbility updateForm failed: ' + JSON.stringify(error));
    })
  }

  onRemoveForm(formId) {
    // Called to notify the form provider that a specified form has been destroyed.
  }

  onAcquireFormState(want) {
    // Called to return a {[url=home.php?mod=space&uid=41289]@Link[/url] FormState} object.
    return formInfo.FormState.READY;
  }
};

案例效果:

打开模拟器
图片8.png

添加卡片至桌面
图片9.png

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友