- import promptAction from '@ohos.promptAction';
- /**
- * TODO Toast默认样式参数
- * author: 鸿蒙布道师
- * since: 2025/04/02
- */
- export class ToastConfig {
- duration: number = 2000; // 显示时长(1500ms-10000ms)
- duration_short: number = 1500; // 显示时长(1500ms)
- duration_long: number = 10000; // 显示时长(10000ms)
- showMode: promptAction.ToastShowMode = promptAction.ToastShowMode.DEFAULT; // 是否显示在应用之上
- alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
- bottom: string | number = '80vp'; // 设置弹窗底部边框距离导航条的高度
- offset: Offset = { dx: 0, dy: 0 }; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
- textColor: ResourceColor = Color.White; // 文本提示框文本颜色,默认值:Color.Black
- backgroundColor: ResourceColor = '#CC000000'; // 文本提示框背板颜色,默认值:Color.Transparent
- backgroundBlurStyle: BlurStyle = BlurStyle.NONE; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
- shadow: ShadowOptions | ShadowStyle = ShadowStyle.OUTER_DEFAULT_MD; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
- }
- /**
- * TODO Toast基本参数类
- * author: 鸿蒙布道师
- * since: 2025/04/02
- */
- export class ToastOptions {
- duration?: number; // 显示时长(1500ms-10000ms)
- showMode?: promptAction.ToastShowMode; // 是否显示在应用之上
- alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
- bottom?: string | number; // 设置弹窗底部边框距离导航条的高度
- offset?: Offset; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
- textColor?: ResourceColor; // 文本提示框文本颜色,默认值:Color.Black
- backgroundColor?: ResourceColor; // 文本提示框背板颜色,默认值:Color.Transparent
- backgroundBlurStyle?: BlurStyle; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
- shadow?: ShadowOptions | ShadowStyle; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
- }
- /**
- * TODO 土司工具类
- * author: 鸿蒙布道师
- * since: 2025/04/02
- */
- export class ToastUtil {
- private static defaultConfig: ToastConfig = new ToastConfig(); // 默认样式
- /**
- * 设置默认统一样式
- * @param configs 回调函数,用于修改默认配置
- */
- static setDefaultConfig(configs: (config: ToastConfig) => void): void {
- configs(ToastUtil.defaultConfig);
- }
- /**
- * 弹出土司,默认时长为2s,距离底部默认为80vp
- * @param message 提示消息
- * @param options 可选参数(显示时长、距离屏幕底部的位置、是否显示在应用之上等)
- */
- static showToast(message: string | Resource, options: ToastOptions = {}): void {
- ToastUtil.show(message, options, 0);
- }
- /**
- * 弹出土司,时长为1.5s,距离底部默认为80vp
- * @param message 提示消息
- * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
- */
- static showShort(message: string | Resource, options: ToastOptions = {}): void {
- ToastUtil.show(message, options, 1);
- }
- /**
- * 弹出土司,时长为10s,距离底部默认为80vp
- * @param message 提示消息
- * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
- */
- static showLong(message: string | Resource, options: ToastOptions = {}): void {
- ToastUtil.show(message, options, 2);
- }
- /**
- * 内部方法:统一处理 Toast 的显示逻辑
- * @param message 提示消息
- * @param options 可选参数
- * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
- */
- private static show(message: string | Resource, options: ToastOptions, type: number): void {
- if (!message || (typeof message === 'string' && message.trim() === '')) {
- console.warn('ToastUtil: Empty or invalid message provided.');
- return;
- }
- const finalOptions = ToastUtil.initToastDefault(options, type);
- promptAction.showToast({
- message,
- duration: finalOptions.duration,
- showMode: finalOptions.showMode,
- alignment: finalOptions.alignment,
- bottom: finalOptions.bottom,
- offset: finalOptions.offset,
- textColor: finalOptions.textColor,
- backgroundColor: finalOptions.backgroundColor,
- backgroundBlurStyle: finalOptions.backgroundBlurStyle,
- shadow: finalOptions.shadow,
- });
- }
- /**
- * 初始化 ToastOptions 参数
- * @param options 用户传入的选项
- * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
- * @returns 合并后的完整选项
- */
- private static initToastDefault(options: ToastOptions, type: number): ToastOptions {
- const defaultDuration =
- type === 1 ? ToastUtil.defaultConfig.duration_short :
- type === 2 ? ToastUtil.defaultConfig.duration_long :
- ToastUtil.defaultConfig.duration;
- return {
- duration: options.duration ?? defaultDuration,
- showMode: options.showMode ?? ToastUtil.defaultConfig.showMode,
- alignment: options.alignment ?? ToastUtil.defaultConfig.alignment,
- bottom: options.bottom ?? ToastUtil.defaultConfig.bottom,
- offset: options.offset ?? ToastUtil.defaultConfig.offset,
- textColor: options.textColor ?? ToastUtil.defaultConfig.textColor,
- backgroundColor: options.backgroundColor ?? ToastUtil.defaultConfig.backgroundColor,
- backgroundBlurStyle: options.backgroundBlurStyle ?? ToastUtil.defaultConfig.backgroundBlurStyle,
- shadow: options.shadow ?? ToastUtil.defaultConfig.shadow,
- };
- }
- }
复制代码 代码如下:
- import promptAction from '@ohos.promptAction';
- /**
- * TODO Toast默认样式参数
- * author: 鸿蒙布道师
- * since: 2025/04/02
- */
- export class ToastConfig {
- duration: number = 2000; // 显示时长(1500ms-10000ms)
- duration_short: number = 1500; // 显示时长(1500ms)
- duration_long: number = 10000; // 显示时长(10000ms)
- showMode: promptAction.ToastShowMode = promptAction.ToastShowMode.DEFAULT; // 是否显示在应用之上
- alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
- bottom: string | number = '80vp'; // 设置弹窗底部边框距离导航条的高度
- offset: Offset = { dx: 0, dy: 0 }; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
- textColor: ResourceColor = Color.White; // 文本提示框文本颜色,默认值:Color.Black
- backgroundColor: ResourceColor = '#CC000000'; // 文本提示框背板颜色,默认值:Color.Transparent
- backgroundBlurStyle: BlurStyle = BlurStyle.NONE; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
- shadow: ShadowOptions | ShadowStyle = ShadowStyle.OUTER_DEFAULT_MD; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
- }
- /**
- * TODO Toast基本参数类
- * author: 鸿蒙布道师
- * since: 2025/04/02
- */
- export class ToastOptions {
- duration?: number; // 显示时长(1500ms-10000ms)
- showMode?: promptAction.ToastShowMode; // 是否显示在应用之上
- alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
- bottom?: string | number; // 设置弹窗底部边框距离导航条的高度
- offset?: Offset; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
- textColor?: ResourceColor; // 文本提示框文本颜色,默认值:Color.Black
- backgroundColor?: ResourceColor; // 文本提示框背板颜色,默认值:Color.Transparent
- backgroundBlurStyle?: BlurStyle; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
- shadow?: ShadowOptions | ShadowStyle; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
- }
- /**
- * TODO 土司工具类
- * author: 鸿蒙布道师
- * since: 2025/04/02
- */
- export class ToastUtil {
- private static defaultConfig: ToastConfig = new ToastConfig(); // 默认样式
- /**
- * 设置默认统一样式
- * @param configs 回调函数,用于修改默认配置
- */
- static setDefaultConfig(configs: (config: ToastConfig) => void): void {
- configs(ToastUtil.defaultConfig);
- }
- /**
- * 弹出土司,默认时长为2s,距离底部默认为80vp
- * @param message 提示消息
- * @param options 可选参数(显示时长、距离屏幕底部的位置、是否显示在应用之上等)
- */
- static showToast(message: string | Resource, options: ToastOptions = {}): void {
- ToastUtil.show(message, options, 0);
- }
- /**
- * 弹出土司,时长为1.5s,距离底部默认为80vp
- * @param message 提示消息
- * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
- */
- static showShort(message: string | Resource, options: ToastOptions = {}): void {
- ToastUtil.show(message, options, 1);
- }
- /**
- * 弹出土司,时长为10s,距离底部默认为80vp
- * @param message 提示消息
- * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
- */
- static showLong(message: string | Resource, options: ToastOptions = {}): void {
- ToastUtil.show(message, options, 2);
- }
- /**
- * 内部方法:统一处理 Toast 的显示逻辑
- * @param message 提示消息
- * @param options 可选参数
- * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
- */
- private static show(message: string | Resource, options: ToastOptions, type: number): void {
- if (!message || (typeof message === 'string' && message.trim() === '')) {
- console.warn('ToastUtil: Empty or invalid message provided.');
- return;
- }
- const finalOptions = ToastUtil.initToastDefault(options, type);
- promptAction.showToast({
- message,
- duration: finalOptions.duration,
- showMode: finalOptions.showMode,
- alignment: finalOptions.alignment,
- bottom: finalOptions.bottom,
- offset: finalOptions.offset,
- textColor: finalOptions.textColor,
- backgroundColor: finalOptions.backgroundColor,
- backgroundBlurStyle: finalOptions.backgroundBlurStyle,
- shadow: finalOptions.shadow,
- });
- }
- /**
- * 初始化 ToastOptions 参数
- * @param options 用户传入的选项
- * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
- * @returns 合并后的完整选项
- */
- private static initToastDefault(options: ToastOptions, type: number): ToastOptions {
- const defaultDuration =
- type === 1 ? ToastUtil.defaultConfig.duration_short :
- type === 2 ? ToastUtil.defaultConfig.duration_long :
- ToastUtil.defaultConfig.duration;
- return {
- duration: options.duration ?? defaultDuration,
- showMode: options.showMode ?? ToastUtil.defaultConfig.showMode,
- alignment: options.alignment ?? ToastUtil.defaultConfig.alignment,
- bottom: options.bottom ?? ToastUtil.defaultConfig.bottom,
- offset: options.offset ?? ToastUtil.defaultConfig.offset,
- textColor: options.textColor ?? ToastUtil.defaultConfig.textColor,
- backgroundColor: options.backgroundColor ?? ToastUtil.defaultConfig.backgroundColor,
- backgroundBlurStyle: options.backgroundBlurStyle ?? ToastUtil.defaultConfig.backgroundBlurStyle,
- shadow: options.shadow ?? ToastUtil.defaultConfig.shadow,
- };
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |