padding: const EdgeInsets.all(25.0)
padding: EdgeInsets.all(25.0),
在 Dart 演示中,大多数 padding 或 child 都添加了 const,请问是否有优化措施?
padding: const EdgeInsets.all(25.0)
padding: EdgeInsets.all(25.0),
让我们考虑下面这三行代码:
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类创建一个新对象并为其左、上、右、下赋值,然后呈现给定的小部件。
2. 在第二行中,EdgeInsets类创建一个新对象并为其左、上、右、下赋值,然后呈现给定的小部件。
3. 在第三行中,EdgeInsets类创建一个新对象并为其左、上、右、下赋值,然后呈现给定的小部件。
因此,通过使用const关键字,我们可以减少每次重新创建相同对象所需的时间,并且在需要时重复使用它。
const
表示对象的(填充在此)整个深度状态可以完全在编译时确定,并且填充将被冻结并完全不可变。
PS:请阅读注释以获得更好的解释。
const
并不会使对象变为不可变。使用new EdgeInsets.all(25.0)
创建的对象(带或不带字面量new
)同样是不可变的。相反,const
确保对象是不可变的(您不能犯错误并意外地创建一个可变对象),并且它将对象规范化,因此所有形式的表达式const EdgeInsets.all(25.0)
都会计算为完全相同的对象。如果您在许多地方使用相同的值,则可以节省一些内存,而无需创建全局变量来共享该对象。 - lrn