鸿蒙NEXT开发土司工具类(ArkTs)

打印 上一主题 下一主题

主题 992|帖子 992|积分 2976

  1. import promptAction from '@ohos.promptAction';
  2. /**
  3. * TODO Toast默认样式参数
  4. * author: 鸿蒙布道师
  5. * since: 2025/04/02
  6. */
  7. export class ToastConfig {
  8.   duration: number = 2000; // 显示时长(1500ms-10000ms)
  9.   duration_short: number = 1500; // 显示时长(1500ms)
  10.   duration_long: number = 10000; // 显示时长(10000ms)
  11.   showMode: promptAction.ToastShowMode = promptAction.ToastShowMode.DEFAULT; // 是否显示在应用之上
  12.   alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
  13.   bottom: string | number = '80vp'; // 设置弹窗底部边框距离导航条的高度
  14.   offset: Offset = { dx: 0, dy: 0 }; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
  15.   textColor: ResourceColor = Color.White; // 文本提示框文本颜色,默认值:Color.Black
  16.   backgroundColor: ResourceColor = '#CC000000'; // 文本提示框背板颜色,默认值:Color.Transparent
  17.   backgroundBlurStyle: BlurStyle = BlurStyle.NONE; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
  18.   shadow: ShadowOptions | ShadowStyle = ShadowStyle.OUTER_DEFAULT_MD; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
  19. }
  20. /**
  21. * TODO Toast基本参数类
  22. * author: 鸿蒙布道师
  23. * since: 2025/04/02
  24. */
  25. export class ToastOptions {
  26.   duration?: number; // 显示时长(1500ms-10000ms)
  27.   showMode?: promptAction.ToastShowMode; // 是否显示在应用之上
  28.   alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
  29.   bottom?: string | number; // 设置弹窗底部边框距离导航条的高度
  30.   offset?: Offset; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
  31.   textColor?: ResourceColor; // 文本提示框文本颜色,默认值:Color.Black
  32.   backgroundColor?: ResourceColor; // 文本提示框背板颜色,默认值:Color.Transparent
  33.   backgroundBlurStyle?: BlurStyle; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
  34.   shadow?: ShadowOptions | ShadowStyle; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
  35. }
  36. /**
  37. * TODO 土司工具类
  38. * author: 鸿蒙布道师
  39. * since: 2025/04/02
  40. */
  41. export class ToastUtil {
  42.   private static defaultConfig: ToastConfig = new ToastConfig(); // 默认样式
  43.   /**
  44.    * 设置默认统一样式
  45.    * @param configs 回调函数,用于修改默认配置
  46.    */
  47.   static setDefaultConfig(configs: (config: ToastConfig) => void): void {
  48.     configs(ToastUtil.defaultConfig);
  49.   }
  50.   /**
  51.    * 弹出土司,默认时长为2s,距离底部默认为80vp
  52.    * @param message 提示消息
  53.    * @param options 可选参数(显示时长、距离屏幕底部的位置、是否显示在应用之上等)
  54.    */
  55.   static showToast(message: string | Resource, options: ToastOptions = {}): void {
  56.     ToastUtil.show(message, options, 0);
  57.   }
  58.   /**
  59.    * 弹出土司,时长为1.5s,距离底部默认为80vp
  60.    * @param message 提示消息
  61.    * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
  62.    */
  63.   static showShort(message: string | Resource, options: ToastOptions = {}): void {
  64.     ToastUtil.show(message, options, 1);
  65.   }
  66.   /**
  67.    * 弹出土司,时长为10s,距离底部默认为80vp
  68.    * @param message 提示消息
  69.    * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
  70.    */
  71.   static showLong(message: string | Resource, options: ToastOptions = {}): void {
  72.     ToastUtil.show(message, options, 2);
  73.   }
  74.   /**
  75.    * 内部方法:统一处理 Toast 的显示逻辑
  76.    * @param message 提示消息
  77.    * @param options 可选参数
  78.    * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
  79.    */
  80.   private static show(message: string | Resource, options: ToastOptions, type: number): void {
  81.     if (!message || (typeof message === 'string' && message.trim() === '')) {
  82.       console.warn('ToastUtil: Empty or invalid message provided.');
  83.       return;
  84.     }
  85.     const finalOptions = ToastUtil.initToastDefault(options, type);
  86.     promptAction.showToast({
  87.       message,
  88.       duration: finalOptions.duration,
  89.       showMode: finalOptions.showMode,
  90.       alignment: finalOptions.alignment,
  91.       bottom: finalOptions.bottom,
  92.       offset: finalOptions.offset,
  93.       textColor: finalOptions.textColor,
  94.       backgroundColor: finalOptions.backgroundColor,
  95.       backgroundBlurStyle: finalOptions.backgroundBlurStyle,
  96.       shadow: finalOptions.shadow,
  97.     });
  98.   }
  99.   /**
  100.    * 初始化 ToastOptions 参数
  101.    * @param options 用户传入的选项
  102.    * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
  103.    * @returns 合并后的完整选项
  104.    */
  105.   private static initToastDefault(options: ToastOptions, type: number): ToastOptions {
  106.     const defaultDuration =
  107.       type === 1 ? ToastUtil.defaultConfig.duration_short :
  108.         type === 2 ? ToastUtil.defaultConfig.duration_long :
  109.         ToastUtil.defaultConfig.duration;
  110.     return {
  111.       duration: options.duration ?? defaultDuration,
  112.       showMode: options.showMode ?? ToastUtil.defaultConfig.showMode,
  113.       alignment: options.alignment ?? ToastUtil.defaultConfig.alignment,
  114.       bottom: options.bottom ?? ToastUtil.defaultConfig.bottom,
  115.       offset: options.offset ?? ToastUtil.defaultConfig.offset,
  116.       textColor: options.textColor ?? ToastUtil.defaultConfig.textColor,
  117.       backgroundColor: options.backgroundColor ?? ToastUtil.defaultConfig.backgroundColor,
  118.       backgroundBlurStyle: options.backgroundBlurStyle ?? ToastUtil.defaultConfig.backgroundBlurStyle,
  119.       shadow: options.shadow ?? ToastUtil.defaultConfig.shadow,
  120.     };
  121.   }
  122. }
复制代码
代码如下:
 
  1. import promptAction from '@ohos.promptAction';
  2. /**
  3. * TODO Toast默认样式参数
  4. * author: 鸿蒙布道师
  5. * since: 2025/04/02
  6. */
  7. export class ToastConfig {
  8.   duration: number = 2000; // 显示时长(1500ms-10000ms)
  9.   duration_short: number = 1500; // 显示时长(1500ms)
  10.   duration_long: number = 10000; // 显示时长(10000ms)
  11.   showMode: promptAction.ToastShowMode = promptAction.ToastShowMode.DEFAULT; // 是否显示在应用之上
  12.   alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
  13.   bottom: string | number = '80vp'; // 设置弹窗底部边框距离导航条的高度
  14.   offset: Offset = { dx: 0, dy: 0 }; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
  15.   textColor: ResourceColor = Color.White; // 文本提示框文本颜色,默认值:Color.Black
  16.   backgroundColor: ResourceColor = '#CC000000'; // 文本提示框背板颜色,默认值:Color.Transparent
  17.   backgroundBlurStyle: BlurStyle = BlurStyle.NONE; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
  18.   shadow: ShadowOptions | ShadowStyle = ShadowStyle.OUTER_DEFAULT_MD; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
  19. }
  20. /**
  21. * TODO Toast基本参数类
  22. * author: 鸿蒙布道师
  23. * since: 2025/04/02
  24. */
  25. export class ToastOptions {
  26.   duration?: number; // 显示时长(1500ms-10000ms)
  27.   showMode?: promptAction.ToastShowMode; // 是否显示在应用之上
  28.   alignment?: Alignment; // 对齐方式,默认值:undefined,默认底部偏上位置
  29.   bottom?: string | number; // 设置弹窗底部边框距离导航条的高度
  30.   offset?: Offset; // 在对齐方式上的偏移,默认值:{dx:0, dy:0}
  31.   textColor?: ResourceColor; // 文本提示框文本颜色,默认值:Color.Black
  32.   backgroundColor?: ResourceColor; // 文本提示框背板颜色,默认值:Color.Transparent
  33.   backgroundBlurStyle?: BlurStyle; // 文本提示框背板模糊材质,默认值:BlurStyle.COMPONENT_ULTRA_THICK
  34.   shadow?: ShadowOptions | ShadowStyle; // 文本提示框背板阴影,默认值:ShadowStyle.OUTER_DEFAULT_MD
  35. }
  36. /**
  37. * TODO 土司工具类
  38. * author: 鸿蒙布道师
  39. * since: 2025/04/02
  40. */
  41. export class ToastUtil {
  42.   private static defaultConfig: ToastConfig = new ToastConfig(); // 默认样式
  43.   /**
  44.    * 设置默认统一样式
  45.    * @param configs 回调函数,用于修改默认配置
  46.    */
  47.   static setDefaultConfig(configs: (config: ToastConfig) => void): void {
  48.     configs(ToastUtil.defaultConfig);
  49.   }
  50.   /**
  51.    * 弹出土司,默认时长为2s,距离底部默认为80vp
  52.    * @param message 提示消息
  53.    * @param options 可选参数(显示时长、距离屏幕底部的位置、是否显示在应用之上等)
  54.    */
  55.   static showToast(message: string | Resource, options: ToastOptions = {}): void {
  56.     ToastUtil.show(message, options, 0);
  57.   }
  58.   /**
  59.    * 弹出土司,时长为1.5s,距离底部默认为80vp
  60.    * @param message 提示消息
  61.    * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
  62.    */
  63.   static showShort(message: string | Resource, options: ToastOptions = {}): void {
  64.     ToastUtil.show(message, options, 1);
  65.   }
  66.   /**
  67.    * 弹出土司,时长为10s,距离底部默认为80vp
  68.    * @param message 提示消息
  69.    * @param options 可选参数(距离屏幕底部的位置、是否显示在应用之上等)
  70.    */
  71.   static showLong(message: string | Resource, options: ToastOptions = {}): void {
  72.     ToastUtil.show(message, options, 2);
  73.   }
  74.   /**
  75.    * 内部方法:统一处理 Toast 的显示逻辑
  76.    * @param message 提示消息
  77.    * @param options 可选参数
  78.    * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
  79.    */
  80.   private static show(message: string | Resource, options: ToastOptions, type: number): void {
  81.     if (!message || (typeof message === 'string' && message.trim() === '')) {
  82.       console.warn('ToastUtil: Empty or invalid message provided.');
  83.       return;
  84.     }
  85.     const finalOptions = ToastUtil.initToastDefault(options, type);
  86.     promptAction.showToast({
  87.       message,
  88.       duration: finalOptions.duration,
  89.       showMode: finalOptions.showMode,
  90.       alignment: finalOptions.alignment,
  91.       bottom: finalOptions.bottom,
  92.       offset: finalOptions.offset,
  93.       textColor: finalOptions.textColor,
  94.       backgroundColor: finalOptions.backgroundColor,
  95.       backgroundBlurStyle: finalOptions.backgroundBlurStyle,
  96.       shadow: finalOptions.shadow,
  97.     });
  98.   }
  99.   /**
  100.    * 初始化 ToastOptions 参数
  101.    * @param options 用户传入的选项
  102.    * @param type 类型标识(0: 默认,1: 短时间,2: 长时间)
  103.    * @returns 合并后的完整选项
  104.    */
  105.   private static initToastDefault(options: ToastOptions, type: number): ToastOptions {
  106.     const defaultDuration =
  107.       type === 1 ? ToastUtil.defaultConfig.duration_short :
  108.         type === 2 ? ToastUtil.defaultConfig.duration_long :
  109.         ToastUtil.defaultConfig.duration;
  110.     return {
  111.       duration: options.duration ?? defaultDuration,
  112.       showMode: options.showMode ?? ToastUtil.defaultConfig.showMode,
  113.       alignment: options.alignment ?? ToastUtil.defaultConfig.alignment,
  114.       bottom: options.bottom ?? ToastUtil.defaultConfig.bottom,
  115.       offset: options.offset ?? ToastUtil.defaultConfig.offset,
  116.       textColor: options.textColor ?? ToastUtil.defaultConfig.textColor,
  117.       backgroundColor: options.backgroundColor ?? ToastUtil.defaultConfig.backgroundColor,
  118.       backgroundBlurStyle: options.backgroundBlurStyle ?? ToastUtil.defaultConfig.backgroundBlurStyle,
  119.       shadow: options.shadow ?? ToastUtil.defaultConfig.shadow,
  120.     };
  121.   }
  122. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表