首先自定义Dialog组件:@CustomDialog export default struct CustomDialogExample { @Link textValue: string; @Link inputValue: string; controller: CustomDialogController; cancel: () => void = () => {}; confirm: () => void = () => {}; build() { Column() { Text('Change text').fontSize(20).margin({ top: 10, bottom: 10 }) TextInput({ placeholder: '', text: this.textValue }).height(60).width('90%') .onChange((value: string) => { this.textValue = value }) Text('Whether to change a text?').fontSize(16).margin({ bottom: 10 }) Flex({ justifyContent: FlexAlign.SpaceAround }) { Button('cancel') .onClick(() => { this.controller.close() this.cancel() }).backgroundColor(0xffffff).fontColor(Color.Black) Button('confirm') .onClick(() => { this.inputValue = this.textValue this.controller.close() this.confirm() }).backgroundColor(0xffffff).fontColor(Color.Red) }.margin({ bottom: 10 }) } } }在需要用到Dialog的组件中使用:import CustomDialogExample from './CustomDialogExample'; @Entry @Component struct CustomDialogUser { @State textValue: string = ''; @State inputValue: string = 'click me'; //配置自定义弹窗的参数 dialogController: CustomDialogController | null = new CustomDialogController({ builder: CustomDialogExample({ cancel: this.onCancel, confirm: this.onAccept, textValue: $textValue, inputValue: $inputValue }), cancel: this.existApp, autoCancel: true, alignment: DialogAlignment.Default, offset: { dx: 0, dy: -20 }, gridCount: 4, customStyle: false }); // 在自定义组件即将析构销毁时将dialogController置空 aboutToDisappear() { this.dialogController = null } onCancel() { console.info('Callback when the first button is clicked') } onAccept() { console.info('Callback when the second button is clicked') } existApp() { console.info('Click the callback in the blank area') } build() { Column() { Button(this.inputValue) .onClick(() => { if (this.dialogController != null) { this.dialogController.open() } }).backgroundColor(0x317aff) }.width('100%').margin({ top: 5 }) } }参考链接自定义弹窗(CustomDialog)
参考链接
自定义弹窗(CustomDialog)