Stepper的构造函数
const Stepper({
super.key,
required this.steps,
this.physics,
this.type = StepperType.vertical,
this.currentStep = 0,
this.onStepTapped,
this.onStepContinue,
this.onStepCancel,
this.controlsBuilder,
this.elevation,
this.margin,
this.stepIconBuilder,
}) : assert(0 <= currentStep && currentStep < steps.length);
构造函数各个参数的含义
Stepper 构造函数用于创建一个步骤指示器(stepper),该指示器通常用于指导用户完成多个连续的步骤,例如表单的多个部分。以下是 Stepper 构造函数的各个参数的详细介绍:
- key(类型:Key,可选参数):
此参数用于在 widget 树中标识 Stepper,通常用于测试或管理目的。
- steps(类型:List<Step>,必需参数):
这是一个包含步骤信息的列表,每个步骤都需要一个 Step 对象。 Step 对象包含有关每个步骤的信息,例如标题、内容、状态等。 步骤按照它们在列表中的顺序显示在 stepper 中。
- physics(类型:ScrollPhysics,可选参数):
此参数控制步骤指示器的滚动行为,例如滚动是否可以反弹、滚动到边界时的效果等。 默认情况下,它是 null,并且会使用父级 ListView 的默认滚动行为。
- type(类型:StepperType,可选参数):
此参数定义了 stepper 的类型,可以是 StepperType.vertical(垂直)或 StepperType.horizontal(水平)。 默认为 StepperType.vertical,表示垂直方向的 stepper。
- currentStep(类型:int,可选参数):
表示当前选定的步骤的索引。默认为 0,即第一个步骤。 您可以通过更改此值来控制 stepper 的当前活动步骤。
- onStepTapped(类型:Function(int)?,可选参数):
当用户点击步骤时触发的回调函数。 回调函数会接收一个整数参数,表示被点击的步骤的索引。
- onStepContinue(类型:VoidCallback,可选参数):
当用户点击“继续”按钮时触发的回调函数。 通常用于在用户完成一个步骤后执行一些操作。
- onStepCancel(类型:VoidCallback,可选参数):
当用户点击“取消”按钮时触发的回调函数。 通常用于在用户取消一个步骤后执行一些操作。
- controlsBuilder(类型:Widget Function(BuildContext, {VoidCallback? onStepContinue, VoidCallback? onStepCancel})?,可选参数):
此参数允许自定义步骤指示器的控件(继续和取消按钮)。 您可以通过此回调函数构建自定义的控件,并在需要时添加自定义逻辑。
- elevation(类型:double,可选参数):
用于指定 stepper 表面的阴影效果的高度。
- margin(类型:EdgeInsetsGeometry,可选参数):
用于指定 stepper 的外边距,即 stepper 和其周围其他元素之间的间距。
- stepIconBuilder(类型:Widget Function(int, bool),可选参数):
用于自定义每个步骤的图标(默认是数字)。这个回调函数接收两个参数,一个是步骤的索引,另一个是表示步骤是否已完成的布尔值。
- assert
构造函数中的 assert 语句用于确保 currentStep 的值在有效范围内(大于等于 0 且小于步骤数目)。这是为了避免出现超出步骤列表范围的错误。
physics参数
physics 参数用于控制 Stepper(步骤指示器)的滚动行为,特别是在垂直方向上。physics 的值是一个 ScrollPhysics 类型的对象,它定义了滚动的物理性质。const AlwaysScrollableScrollPhysics() 是其中一个 ScrollPhysics 的实例,表示一直允许滚动。
const AlwaysScrollableScrollPhysics() 意味着在所有情况下都允许垂直滚动,即使内容不足以滚动,也会保持可滚动状态。这通常用于确保即使内容不够多,也可以滚动,以使用户能够自由浏览所有步骤。
除了 AlwaysScrollableScrollPhysics,还有其他几种 ScrollPhysics 的选项,可以根据需要选择:
-
BouncingScrollPhysics:iOS 风格的弹性滚动物理性质,当用户滚动到边缘时会有弹性效果。
-
ClampingScrollPhysics:当用户滚动到边缘时,会自动将滚动限制在边缘,而不产生弹性效果。
-
FixedExtentScrollPhysics:用于固定列表项高度的情况,每个项目的高度相同。
-
NeverScrollableScrollPhysics:禁用滚动,内容不能滚动。
-
PageScrollPhysics:用于分页滚动,类似于左右滑动页面。