文档管理中心
指南便捷生活类行业实践关键场景示例证件类型选择

证件类型选择

场景介绍

证件类型选择是便捷生活类应用中高频使用场景之一,如用户在注册账号、实名认证、信息填报时,需要选择证件类型并输入证件号码。

本示例基于不依赖UI组件的半模态页面openBindSheet构建用户注册的证件类型半模态页面,支持选择的证件类型包括居民身份证、境外人员身份证明、港澳台居民居住证等。

效果预览

实现思路

  1. 使用@Extend装饰器定义扩展组件样式,统一设置用户注册表单文本框/文本输入框样式。使用@Styles装饰器定义组件重用样式,统一设置用户注册表单Row样式。
    收起
    自动换行
    深色代码主题
    复制
    1. // UserRegistrationPage.ets
    2. @Extend(Text)
    3. function textStyle() {
    4. // 定义文字样式信息
    5. }
    6. @Component
    7. export struct UserRegistrationPage {
    8. @Styles
    9. rowStyle(){
    10. // 定义组件样式信息
    11. }
    12. build() {
    13. Column({ space: Constant.REG_INFO_SPACE_10 }) {
    14. Row() {
    15. Text($r('app.string.name_id_type'))
    16. .textStyle()
    17. }
    18. .rowStyle()
    19. }
    20. }
    21. }
  2. 通过不依赖UI组件的半模态页面openBindSheet弹出证件类型选项,供用户选择。
    收起
    自动换行
    深色代码主题
    复制
    1. // UserRegistrationPage.ets构造半模态页面参数,触发半模态页面显示和关闭
    2. private ctx: UIContext = this.getUIContext();
    3. private contentNode: ComponentContent<Object> =
    4. new ComponentContent(this.ctx, wrapBuilder(idTypeBindSheetBuilder),
    5. new BindSheetParams(this.selectedIDType, idTypeMainData, false));
    6. aboutToAppear(): void {
    7. PromptActionClass.setContext(this.ctx)
    8. PromptActionClass.setContentNode(this.contentNode)
    9. PromptActionClass.setOptions(this.options)
    10. }
    11. idTypeOnClick() {
    12. // 每次重新点开证件类型,均为打开一级弹框
    13. this.openMainSheet();
    14. }
    15. openMainSheet() {
    16. PromptActionClass.closeBindSheet();
    17. this.contentNode.update(new BindSheetParams(this.selectedIDType, idTypeMainData, false));
    18. this.options = {
    19. // ...
    20. };
    21. PromptActionClass.setOptions(this.options);
    22. PromptActionClass.openBindSheet();
    23. }
    24. // IDTypeBindSheet.ets构造半模态页面实现
    25. @Builder
    26. export function idTypeBindSheetBuilder(dialogParams: BindSheetParams) {
    27. Column() {
    28. // ...
    29. }
    30. }

约束与限制

  • 本示例支持API Version 20 Release及以上版本。
  • 本示例支持HarmonyOS 6.0.0 Release SDK及以上版本。
  • 本示例需要使用DevEco Studio 6.0.0 Release及以上版本进行编译运行。

工程目录

收起
自动换行
深色代码主题
复制
  1. ├──entry/src/main/ets // 代码区
  2. │ ├──common
  3. │ │ └──CommonConstants.ets // 常量
  4. │ ├──components
  5. │ │ └──IDTypeBindSheet.ets // 证件类型半模态页面实现
  6. │ ├──entryability
  7. │ │ └──EntryAbility.ets
  8. │ ├──entrybackupability
  9. │ │ └──EntryBackupAbility.ets
  10. │ ├──pages
  11. │ │ ├──NavigationPage.ets // 主页面
  12. │ │ └──UserRegistrationPage.ets // 用户注册页面
  13. │ ├──utils
  14. │ │ ├──DisplayUtil.ets // 页面显示工具类
  15. │ │ └──PromptActionClass.ets // 半模态页面工具类
  16. │ └──viewmodel
  17. │ └──IDTypeData.ets // 证件类型数据模型类
  18. └──entry/src/main/resources // 资源目录
搜索
请输入您想要搜索的关键词