Flutter中自定义StatefulWidget如何实现调用时传入自定义参数
Flutter StatefulWidget 传参修改方案
和普通Dart类定义构造参数的逻辑一致,只需要在StatefulWidget子类中声明要接收的属性、修改构造方法,State子类中通过widget.属性名即可访问传入的值。
完整修改示例
1. 调整SomeClass的参数定义和构造方法
这里以接收你自定义的CheckListPoint实例为例,代码如下:
class SomeClass extends StatefulWidget { // 声明要接收的参数,建议用final修饰 final CheckListPoint checkPoint; // 改造构造方法,必传参数添加required修饰,保留原有的key参数 const SomeClass({ Key? key, required this.checkPoint, }) : super(key: key); @override _SomeClassState createState() => _SomeClassState(); } class _SomeClassState extends State<SomeClass> { @override Widget build(BuildContext context) { // State类中直接通过widget.属性名即可访问传入的参数 return Container( child: Column( children: [ Text("要求:${widget.checkPoint.requirement}"), Text("是否通过:${widget.checkPoint.passed ? "是" : "否"}"), ], ), ); } }
2. 调用传参方式
和普通类实例化传参逻辑完全一致:
// 先创建CheckListPoint实例 CheckListPoint myCheckPoint = CheckListPoint(true, false, "所有字段校验通过"); // 实例化SomeClass时传入参数即可 SomeClass(checkPoint: myCheckPoint)
其他说明
- 如果不需要封装成
CheckListPoint传入,也可以直接在SomeClass中单独声明bool correctly、bool passed、String requirement三个属性,构造方法中对应添加参数即可,调用时分别传值就行。 - 如果参数是非必传的,可以将属性定义为可空类型,或者给参数设置默认值,无需加
required修饰。
内容的提问来源于stack exchange,提问作者GDTyka
相关产品推荐
相关产品推荐

