gpt4 book ai didi

flutter - 为什么我的自建窗口小部件的命名参数在Flutter中不起作用?

转载 作者:行者123 更新时间:2023-12-03 04:27:16 25 4
gpt4 key购买 nike

我想将嵌套的Padding / Container / Padding结构包装在它自己的Widget中,以便我可以重用它:

我通过以下方式声明我的小部件:

class UpperWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {

return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width: this.width,
child: Padding(padding: const EdgeInsets.all(8.0), child: child)),
);
}

final double width;
final Widget child;

const UpperWidget(Key key, this.width, this.child) : super(key: key);
}

我想在以下地方使用它:
class LowerWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return UpperWidget(
width:50,
child: Text("Hello World");
}),
);
}
}

当我将鼠标悬停在宽度上时,Android Studio向我显示错误:
3 required argument(s) expected but 0 found
Try adding additional required arguments.

The named parameter 'width' isn't defined.
Try correcting the name to an existing parameter, or defining a parameter with this name.

我该怎么办,以便 widthchild被正确地视为命名参数?

最佳答案

您需要使用大括号{}将它们包装成optional

class UpperWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {

return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width: this.width,
child: Padding(padding: const EdgeInsets.all(8.0), child: child)),
);
}

final double width;
final Widget child;

const UpperWidget({Key key, this.width, this.child}) : super(key: key);
}

如果还需要它们,则可以包括 @required批注:
const UpperWidget({Key key, @required this.width, @required this.child}) : super(key: key);

关于flutter - 为什么我的自建窗口小部件的命名参数在Flutter中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58914960/

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