You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:36:03