【发布时间】:2021-06-13 16:17:58
【问题描述】:
我对 Dart (Flutter) 中的 const 构造函数感到喘不过气来。
假设我有 StatelessWidget 和 const 构造函数
class ChildWidget extends StatelessWidget {
final String myText;
const ChildWidget(
{this.myText = ''});
@override
Widget build(BuildContext context) {
return Text(
myText
);
}
}
并在父窗口小部件中使用它
class _ParentWidgetState extends State<ParentWidget> {
String myText = 'Hello World';
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
const ChildWidget(myText: myText),
],
),
),
);
}
}
显示 myText 是无效 const 的错误。但是当我删除 ChildWidget 之前的 const 关键字时,一切都会好起来的。怎么了? have 和没有 const 关键字有什么区别?
我认为 const 关键字会触发 ChildWidget 中的 const 构造函数。也许 Flutter 会隐式创建具有相同参数的普通构造函数,例如 const one,并在没有 const 关键字时触发 this?
请给我解释一下。非常感谢,祝您有美好的一天。
【问题讨论】: