我已经阅读了许多文章和Stack Overflow问题/答案以供const
讨论。
人们说,如果您创建一个const实例,则该实例将仅创建一次。如果以后尝试创建同一实例,则将返回旧实例,并且不需要新的内存分配。听起来效果更好。例如:
child: Column(
children: <Widget>[
Container(padding: const EdgeInsets.symmetric(horizontal: 8.0)),
Container(padding: const EdgeInsets.symmetric(horizontal: 8.0)),
]
)
上面的代码仅显示了这个想法。本const EdgeInsets.symmetric(horizontal: 8.0))
不必是相同的部件类中。
现在,当我阅读Dart 2官方公告时,它有一个相反的例子。我只是在这里复制该文章的代码块:
// Before Dart 2
Widget build(BuildContext context) {
return new Container(
height: 56.0,
padding: const EdgeInsets.symmetric(horizontal: 8.0),
decoration: new BoxDecoration(color: Colors.blue[500]),
child: new Row(
...
),
);
}
// After Dart 2
Widget build(BuildContext context) =>
Container(
height: 56.0,
padding: EdgeInsets.symmetric(horizontal: 8.0),
decoration: BoxDecoration(color: Colors.blue[500]),
child: Row(
...
),
);
因此,我是否仍应const
在Dart 2中添加关键字?
一开始,我将删除所有const关键字。但是,当我读到有人建议添加const关键字以提高性能时,我正在添加const关键字。但是今天,当我偶然阅读这篇文章时,我完全感到困惑。const auto是否会在这种情况下在Dart 2 Flutter引擎中暗示?还是在Flutter中解决这个问题?
const auto是否会在Dart 2颤振引擎中隐含
否。Dart2并不暗含const
关键字。它删除了多余的。
Foo()
和
const Foo()
是不等价的。
另一方面:
const Foo(Bar())
和
const Foo(const Bar())
确实是等效的。
所以是的,const
性能优化仍然需要关键字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句