gpt4 book ai didi

dart - 调用构造函数 super 错误,传递了 3 个,预期为 0 个

转载 作者:IT王子 更新时间:2023-10-29 07:10:20 26 4
gpt4 key购买 nike

背景:我正在尝试继承 AnimatedCrossFade 以应用此补丁 https://github.com/flutter/flutter/issues/10243作为一个子类(而不是 fork flutter )。我只是在学习 dart/flutter,老实说,我认为创建从加载小部件到网络图像的淡入淡出本来是一件非常简单的事情,首先要尝试(这并不容易,FadeInImage 不会淡入淡出,也不会使用小部件 [尽管 flutter 中几乎所有东西的设计目标都是小部件],Image.network 没有 onDownloadCompleted 回调,并且 AnimatedCrossFade 有上述居中错误)。无论如何...

这是我调用的代码:

class FixedCrossFade extends AnimatedCrossFade {
const FixedCrossFade({
Key key,
@required firstChild,
@required secondChild,
firstCurve: Curves.linear,
secondCurve: Curves.linear,
sizeCurve: Curves.linear,
alignment: Alignment.topCenter,
@required crossFadeState,
@required duration,
layoutBuilder: AnimatedCrossFade.defaultLayoutBuilder,
}) : super(
key,
firstChild,
secondChild,
firstCurve: firstCurve,
secondCurve: secondCurve,
alignment: alignment,
crossFadeState: crossFadeState,
duration: duration,
layoutBuilder: layoutBuilder
);
}

作为引用,这是 AnimatedCrossFade 的构造函数:

const AnimatedCrossFade({
Key key,
@required this.firstChild,
@required this.secondChild,
this.firstCurve: Curves.linear,
this.secondCurve: Curves.linear,
this.sizeCurve: Curves.linear,
this.alignment: Alignment.topCenter,
@required this.crossFadeState,
@required this.duration,
this.layoutBuilder: defaultLayoutBuilder,
}) : assert(firstChild != null),
assert(secondChild != null),
assert(firstCurve != null),
assert(secondCurve != null),
assert(sizeCurve != null),
assert(alignment != null),
assert(crossFadeState != null),
assert(duration != null),
assert(layoutBuilder != null),
super(key: key);

我的 FixedCrossFade 类错误:

error: line 33 pos 8: invalid arguments passed to super class constructor 'AnimatedCrossFade.': 3 passed, 0 expected

第 33 行对应于行 }) : super(

我实际上并没有改变构造函数,我相信我需要做的就是覆盖 createState,并完全重新实现状态对象。来自 python/C++ 背景,我很惊讶扩展 AnimatedCrossFade 没有任何更改会导致错误:

class FixedCrossFade extends AnimatedCrossFade {}
...

No constructor 'FixedCrossFade' declared in class 'FixedCrossFade'

我对 dart 和 flutter 非常陌生,所以这可能是一个非常简单的错误。感谢您的帮助!

最佳答案

正如您所注意到的, super 构造函数只有命名参数,但是您传递的 keyfirstChildsecondChild 没有名称,所以它们是位置参数。将它们更改为:

}) : super(
key : key,
firstChild: firstChild,
secondChild: secondChild,
firstCurve: firstCurve,

super 调用将起作用。

您需要添加一个构造函数,因为构造函数不是继承的。它们不是实例方法,它们更像是也不是继承的静态方法。所以,对于你的类有任何构造函数,它需要声明它,然后调用一个合适的生成超构造函数来创建父类(super class)。诚然,当你所做的只是提出论点时,这很烦人。

关于dart - 调用构造函数 super 错误,传递了 3 个,预期为 0 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49723153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com