HarmonyOS鸿蒙NEXT中如何为CustomDialogController设置默认属性,避免每次使用时重新设置?

HarmonyOS鸿蒙NEXT中如何为CustomDialogController设置默认属性,避免每次使用时重新设置? 我的HarmonyOS NEXT应用需要一个CustomDialogController,我希望它有一些特定的默认属性。我应该如何实现这一点,以避免每次使用时都要重新设置?鸿蒙开发中,我创建了一个自定义的,但每次使用时都要修改默认属性。请问有没有更好的做法?

3 回复

将默认属性提取出来:

// DialogConstants.ets
export class DialogConstants {
  static dialogOptions: CustomDialogControllerOptions = {
    alignment: DialogAlignment.Center,
    offset: { dx: 0, dy: -20 },
    customStyle: false,
    cornerRadius: 20,
    width: 300,
    height: 200,
    borderWidth: 1,
    borderStyle: BorderStyle.Dashed,
    borderColor: Color.Blue,
    backgroundColor: Color.White,
    shadow: ({
      radius: 20,
      color: Color.Grey,
      offsetX: 50,
      offsetY: 0
    }),
    autoCancel: true,
    builder: undefined
  }
}

使用:

@Entry
@Component
struct CustomDialogUser {
  dialogOptions: CustomDialogControllerOptions = DialogConstants.dialogOptions
  dialogController?: CustomDialogController | null;
  aboutToAppear(): void {
    this.dialogOptions.builder = // 自定义dialog
    this.dialogOptions.cancel = // cancel方法
    this.dialogOptions.onWillDismiss = (dismissDialogAction: DismissDialogAction) => {
        // onWillDismiss方法
    }
    this.dialogController = new CustomDialogController(this.dialogOptions)
  }
}

更多关于HarmonyOS鸿蒙NEXT中如何为CustomDialogController设置默认属性,避免每次使用时重新设置?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙NEXT中,可以通过继承CustomDialogController类并重写其onInit方法来设置默认属性,从而避免每次使用时重新设置。以下是一个示例代码:

import { CustomDialogController, CustomDialog } from '@ohos.customdialog';

class MyCustomDialogController extends CustomDialogController {
    constructor() {
        super();
    }

    onInit(): void {
        super.onInit();
        // 设置默认属性
        this.width = '80%';
        this.height = '60%';
        this.backgroundColor = '#FFFFFF';
    }
}

export default class MyCustomDialog extends CustomDialog {
    controller: MyCustomDialogController;

    constructor() {
        super();
        this.controller = new MyCustomDialogController();
    }
}

在上述代码中,MyCustomDialogController继承了CustomDialogController,并在onInit方法中设置了默认的宽度、高度和背景颜色。这样,每次使用MyCustomDialog时,这些属性会自动应用,无需重复设置。

在HarmonyOS鸿蒙NEXT中,可以为CustomDialogController设置默认属性以减少重复代码。可以通过以下步骤实现:

  1. 继承CustomDialogController:创建一个自定义的对话框控制器类,继承CustomDialogController
  2. 在构造函数中设置默认属性:在自定义类的构造函数中初始化默认属性,如alignmentoffset等。
  3. 使用自定义控制器:在需要的地方实例化并使用这个自定义控制器。

示例代码:

class MyCustomDialogController extends CustomDialogController {
  constructor() {
    super({
      alignment: DialogAlignment.Bottom,
      offset: { dx: 0, dy: 20 }
    });
  }
}

这样,每次使用时无需重复设置这些属性。

回到顶部