在Flutter(Dart 2)中还是可以使用const关键字来提高性能吗?

scon00

我已经阅读了许多文章和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中解决这个问题?

雷米·罗素(Remi Rousselet)

const auto是否会在Dart 2颤振引擎中隐含

否。Dart2并不暗含const关键字。它删除了多余的。

Foo()

const Foo()

等价的。

另一方面:

const Foo(Bar())

const Foo(const Bar())

确实是等效的。

所以是的,const性能优化仍然需要关键字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章