flutter 有状态小部件错误,常量构造函数无法调用“State”的非常量超级构造函数

pu3pd22g  于 2023-01-14  发布在  Flutter
关注(0)|答案(1)|浏览(168)

这是我公共git.https://github.com/CrazyBunnyz/Sociominer_V2/ Git上有两个分支。main是我的原始代码,大部分都是无状态的。当我尝试将代码与ExpansionTile集成时,问题出现了,我需要状态来检测onExpansionChanged。我尝试实现这个示例,但我一直得到下面的错误。有人能帮忙吗?您可以看到两个分支错误前后的代码。x1c 0d1x ps:已尝试聊天成员({键?键,此.deviceScreenType}):超级(键:键);它弹出其他错误。

完整的问题可以在https://github.com/flutter/flutter/issues/118311中找到。有人能帮忙吗?

3htmauhk

3htmauhk1#

您需要使用小部件类而不是状态类。请删除ChatMember中的参数并使用小部件类。

class MyStatefulWidget extends StatefulWidget {
  final DeviceScreenType? deviceScreenType;
  const MyStatefulWidget({super.key, this.deviceScreenType});

  @override
  State<MyStatefulWidget> createState() => ChatMember();
}

class ChatMember extends State<MyStatefulWidget> {
  @override
  Widget build(BuildContext context) {

现在访问控件变量do,

Column(
  children: List.generate(
    members.length,
    (index) => MemberCard(
      member: members[index],
      deviceScreenType: widget.deviceScreenType, //this
    ),
  ),
),

下一个问题是你用不同的名字来命名,这让人困惑,
你的案子

  • MyStatefulWidget是一个小部件类
  • ChatMember是状态类

你需要像这样使用MyStatefulWidget

Container(
  width: 400,
  child: MyStatefulWidget(deviceScreenType: deviceScreenType),
),

您可以检查pr

相关问题