报错
Error name:TypeError Error message:is not callable Stacktrace: at PUV2ViewBase (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:4029:1) at ViewPU (/usr1/hmos_for_system/src/increment/sourcecode/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/stateMgmt.js:6213:1) at WheelPickerDialog (entry/src/main/ets/common/widgets/dialog/WheelPickerDialog.ets:8:1) at showUniversalDialog (entry/src/main/ets/common/utils/WheelPickerUtils.ets:13:20) at showSocPicker (entry/src/main/ets/common/utils/WheelPickerUtils.ets:107:22) at showSocPicker (entry/src/main/ets/pages/car/OutDisChargeElePage.ets:564:22) at anonymous (entry/src/main/ets/pages/car/OutDisChargeElePage.ets:242:18) at anonymous (entry/src/main/ets/pages/car/OutDisChargeElePage.ets:367:9)
/**
* 显示通用选择器
* @param options 配置选项
*/
static showUniversalDialog(options: WheelPickerOptions) {
const dialog = new WheelPickerDialog({
title: options.title || '选择',
positiveText: options.positiveText || '确认',
negativeText: options.negativeText || '取消',
showPositive: options.showPositive ?? true,
showNegative: options.showNegative ?? true,
pickerConfigs: options.columns,
onConfirmCallback: (...values: string[]) => {
if (options.onConfirm) {
options.onConfirm(...values)
}
},
onCancelCallback: () => {
if (options.onCancel) {
options.onCancel()
}
}
})
const controller = new CustomDialogController({
builder: dialog,
autoCancel: true,
alignment: DialogAlignment.Bottom,
offset: { dx: 0, dy: 0 },
customStyle: true,
gridCount: 4
})
dialog.controller = controller
controller.open()
}
一调用这个方法就崩溃,这个问题的根本原因是不能在工具类中弹dialog导致的,代码放到page页面中就没问题了,在 Page 中创建 Controller:CustomDialogController 必须在 Page 组件中创建和打开
另外目前测试页面的弹窗不能这样单独创建dialog:

必须要放到方法builder里面创建:

否则就会崩溃。

工具类中这样写弹窗也弹不出来,所以弹窗不要封装工具类,直接在页面创建,这两天算是好好踩踩坑,摸索一下。