Stepper
The <Stepper> component provides a step navigator.
NOTE
This component is supported since API version 8. Updates will be marked with a superscript to indicate their earliest API version.
Child Components
Only the child component <StepperItem> is supported.
APIs
Stepper(value?: { index?: number })
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
index | number | No | Index of the <StepperItem> that is currently displayed. Default value: 0 |
Attributes
None
Events
Name | Description |
---|---|
onFinish(callback: () => void) | Invoked when the nextLabel of the last <StepperItem> in the <Stepper> is clicked and the ItemState attribute is set to Normal. |
onSkip(callback: () => void) | Invoked when the current <StepperItem> is ItemState.Skip and the nextLabel is clicked. |
onChange(callback: (prevIndex?: number, index?: number) => void) | Invoked when the prevLabel of the current <StepperItem> is clicked to switch to the previous step page; or when the nextLabel of the current (not the last) <StepperItem> is clicked to switch to the next step page and the ItemState attribute is set to Normal. - prevIndex: index of the step page before the switching. - index: index of the step page after the switching, that is, index of the previous or next step page. |
onNext(callback: (index?: number, pendingIndex?: number) => void) | Invoked when the nextLabel of the current (not the last) <StepperItem> is clicked and the ItemState attribute is set to Normal. - index: index of the current step page. - pendingIndex: index of the next step page. |
onPrevious(callback: (index?: number, pendingIndex?: number) => void) | Invoked when the prevLabel of the current <StepperItem> is clicked to switch to the previous step page. - index: index of the current step page. - pendingIndex: index of the previous step page. |
Example
// xxx.ets
@Styles function itemStyle () {
.width(336)
.height(621)
.margin({ top: 48, left: 12 })
.borderRadius(24)
.backgroundColor('#FFFFFF')
}
@Extend(Text) function itemTextStyle () {
.fontColor('#182431')
.fontSize(36)
.fontWeight(500)
.opacity(0.4)
.margin({ top: 82, bottom: 40 })
}
@Entry
@Component
struct StepperExample {
@State currentIndex: number = 0
@State firstState: ItemState = ItemState.Normal
@State secondState: ItemState = ItemState.Normal
@State thirdState: ItemState = ItemState.Normal
build() {
Stepper({
index: this.currentIndex
}) {
// First step page
StepperItem() {
Column() {
Text('Page One')
.itemTextStyle()
Button('change status:' + this.firstState)
.backgroundColor('#007dFF')
.onClick(() => {
this.firstState = this.firstState === ItemState.Skip ? ItemState.Normal : ItemState.Skip
})
}.itemStyle()
}
.nextLabel('Next')
.status(this.firstState)
// Second step page
StepperItem() {
Column() {
Text('Page Two')
.itemTextStyle()
Button('change status:' + this.secondState)
.backgroundColor('#007dFF')
.onClick(() => {
this.secondState = this.secondState === ItemState.Disabled ? ItemState.Normal : ItemState.Disabled
})
}.itemStyle()
}
.nextLabel('Next')
.prevLabel('Previous')
.status(this.secondState)
// Third step page
StepperItem() {
Column() {
Text('Page Three')
.itemTextStyle()
Button('change status:' + this.thirdState)
.backgroundColor('#007dFF')
.onClick(() => {
this.thirdState = this.thirdState === ItemState.Waiting ? ItemState.Normal : ItemState.Waiting
})
}.itemStyle()
}
.status(this.thirdState)
// Fourth step page
StepperItem() {
Column() {
Text('Page Four')
.itemTextStyle()
}.itemStyle()
}
}
.backgroundColor('#F1F3F5')
.onFinish(() => {
// Define the processing logic for when Finish on the last page is clicked, for example, redirection.
console.info('onFinish')
})
.onSkip(() => {
// Define the processing logic for when Skip on the page is clicked, for example, dynamically changing the index of the <Stepper> to redirect to a specific step.
console.info('onSkip')
})
.onChange((prevIndex: number, index: number) => {
this.currentIndex = index
})
}
}