padding: const EdgeInsets.all(25.0)
padding: EdgeInsets.all(25.0),
在Dart演示中,大多数填充或孩子添加const,是否有任何优化?
答案 0 :(得分:3)
让我们考虑一下这三行代码:
1.const EdgeInsets.all(25.0)
2.const EdgeInsets.all(25.0)
3.const EdgeInsets.all(25.0)
1。在第一行,EdgeInsets类创建一个新对象,并为其左,上,右,下端分配其值,并渲染给定的小部件,然后,如果在另一个位置找到它,则创建一个具有相同值的常量对象以进行渲染。
2。 嘿,已经有一个具有此值的对象,因此只需渲染它即可。
3。 嘿,已经有一个具有此值的对象,因此只需渲染它即可。
现在,让我们考虑以下情况:
1.EdgeInsets.all(25.0)
2.EdgeInsets.all(25.0)
3.EdgeInsets.all(25.0)
1。 在第一行,EdgeInsets类创建一个新对象,并为它的left,top,right,bottom分配其值,并呈现给定的小部件。
2。 在第二行,EdgeInsets类创建一个新对象,并为其左,上,右,下分配其值,并呈现给定的小部件。
3。 在第三行,EdgeInsets类创建一个新对象,并为它的left,top,right,bottom分配其值,并呈现给定的小部件。
因此,通过使用const,我们可以减少每次重新创建和使用同一对象的时间,相反,我们创建一次对象,然后在需要时重新使用它。
答案 1 :(得分:0)
const
意味着可以在编译时完全确定对象(此处的填充)的整个深度状态,并且填充将被冻结并且完全不可变。
PS:请阅读评论以获取更好的解释
答案 2 :(得分:0)
“ const”的含义在Dart中更加复杂和微妙。 const修改值。您可以在创建集合时使用它,例如const [1、2、3],以及在构造对象(而不是new)时使用const Point(2,3)。在这里,const表示可以在编译时完全确定对象的整个深度状态,并且对象将被冻结并且完全不可变。
Const对象具有几个有趣的属性和限制: 它们必须由可在编译时计算的数据创建。 const对象无权访问在运行时需要计算的任何内容。 1 + 2是有效的const表达式,但新的DateTime.now()不是。 它们是深刻的,传递不变的。如果您有一个包含集合的最终字段,那么该集合仍然可以是可变的。如果您有const集合,则其中的所有内容也必须递归地为const。 它们被规范化。这有点像字符串实习:对于任何给定的const值,无论计算const表达式多少次,都将创建并重用单个const对象。换句话说: