一、Toggle组件基础

Toggle为鸿蒙切换组件,包含两种类型:

  • Switch:滑块开关,适配功能开关、记住密码场景

  • Checkbox:复选框,适配多选勾选

核心原理:@State修饰变量,页面数据实时联动;onChange监听开关点击,改变量、页面自动刷新,新手易懂双向绑定逻辑。

常用属性:type、isOn、selectedColor、宽高、onChange


案例1:基础开关联动 ToggleDemo

页面&功能:消息推送滑块开关,切换开关,上方文字、文字颜色同步变化,开关开启红字、关闭绿字。

@Entry
@Component
struct ToggleDemo{
  @State isShow:boolean = false
  build() {
    Column(){
      Text(this.isShow?"开关已开启":"开关已关闭")
        .fontSize(32)
        .fontColor(this.isShow?Color.Red:Color.Green)


      Row({space:20}){
        Text("开启消息推送")
          .fontSize(26)
        Toggle({
          type:ToggleType.Switch,
          isOn:false
        })
          .height(38)
          .width(80)
          .selectedColor(Color.Red)
          .onChange((value: boolean) =>{
            this.isShow = value
          })
      }
    }
    .width('100%')
    .height('100%')
  }
}

✅新手代码讲解:1.@State isShow:定义开关状态变量,默认关闭;2.Toggle绑定开关样式,监听点击事件;3.切换开关,把开关状态赋值给isShow;4.文字、颜色用三元表达式,跟着变量自动切换。


案例2:双样式Toggle Toggle1

页面&功能:同时展示复选框、滑块两种开关;滑动滑块,下方提示文字同步切换开关状态。

@Entry
@Component
struct Toggle1{
  @State isopen:boolean = true
  build() {
    Column(){
      Toggle({
        type:ToggleType.Checkbox,
        isOn:false
      })
        .width(50)
      Toggle({
        type:ToggleType.Switch,
        isOn:this.isopen
      })
        .width(150)
        .height(50)
        .selectedColor(Color.Red)
        .onChange((value:boolean)=>{
          this.isopen=! this.isopen
        })
      Text(this.isopen?"开关已打开":"开关已关闭")
        .fontSize(20)
    }
    .width('100%')
    .height('100%')
  }
}

✅新手代码讲解:1.两种type切换开关样式;2.和案例1区别:不直接接收开关返回值,用 !isopen 让变量取反;3.变量取反后,页面文字同步更新状态。


案例3:登录页-记住密码 Mypages

页面&功能:登录界面,包含头像、账号密码输入框、记住密码开关、登录注册按钮;输入账号密码,点击登录弹窗提示结果。

@Entry
@Component
struct Mypages {
  @State isRemb: boolean = true;
  @State username: string = "";
  @State password:string="";

  build() {
    Column({ space: 30 }) {
      Image($r('app.media.banner0'))
        .width(120)
        .height(120)
        .borderRadius(60)
        .shadow({ radius: 50, color: Color.Red })

      Text("账号登录")
        .fontSize(30)
        .fontWeight(FontWeight.Bolder)

        TextInput({ text: this.username, placeholder: "请输入账号" })
          .width('100%')
          .height(50)
          .borderRadius(12)
          .padding({ left: 20 })
          .onChange((value: string) => {
            this.username = value
          })
        TextInput({ text: this.password, placeholder: "请输入密码" })
          .type(InputType.Password)
          .width('100%')
          .height(50)
          .padding({ left: 20 })
          .borderRadius(12)
          .onChange((value: string) => {
            this.password = value
          })

      Row({ space: 20 }) {
        Text("记住密码")
          .fontSize(20)
        Toggle({
          type:ToggleType.Switch,
          isOn:this.isRemb
        })
          .height(38)
          .width(80)
          .selectedColor(Color.Red)
          .onChange((value: boolean) => {
            this.isRemb = value
          })
      }

      Row({space: 20 }) {
        Button('登录')
          .width('140')
          .height('50')
          .fontSize(20)
          .onClick(()=>{
            if (this.username && this.password){
              AlertDialog.show({
                title:"登录成功",
                message:'欢迎你,${this.username}'
              })
            }else {
              AlertDialog.show({
                title:"登录失败",
                message:'用户名${this.username}或密码不正确'
              })
            }
          })

        Button('注册')
          .width('140')
          .height(50)
          .fontSize(26)

      }
    }
    .width('100%')
    .height('100%')
    .padding(15)
    .justifyContent(FlexAlign.Center)
  }
}

✅新手代码讲解:1.三个@State变量:分别存记住密码状态、账号、密码;2.输入框绑定变量,输入文字实时存入变量;3.Toggle绑定记住密码状态,切换即可修改勾选状态;4.登录按钮判断:账号密码不为空=登录成功,为空=登录失败,弹出系统提示框。


开发注意事项

  1. 工程仅支持一个@Entry入口,多余入口需删除

  2. ArkTS不支持${}模板字符串,使用字符串拼接

  3. 开关状态必须绑定@State变量,否则UI不刷新

  4. 图片资源需自行替换工程内media素材

总结

案例循序渐进:基础开关联动→双样式开关→登录实战,零基础掌握:@State状态绑定、Toggle开关用法、输入框绑定、按钮弹窗基础鸿蒙开发逻辑。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐