我了解const
的好处,并且不会在状态变化时重建小部件,但是当您看到下面的代码时,它们仍然是常量,所以我很明显,我希望flutter自动处理它。或者,颤振已经在照顾它了,我不知道吗?
// This makes sense to me but with above mentioned concern
const Text('Your Text Here')
const Icon(Icons.chevron_right, size: 20.0),
无论如何,我的问题是:将SizedBox
和EdgeInsets
小部件定义为下面定义的常量(const)可以吗?
Padding(
padding:
const EdgeInsets.only(top: 16.0, right: 6.0, bottom: 16.0, left: 16.0),
child: Row(
children: <Widget>[
const SizedBox(width: 16.0),
const Icon(Icons.chevron_right, size: 20.0),
],
),
),
答案 0 :(得分:5)
尝试更新树中的某些小部件基本上是扑朔迷离,如果它是常量,则没有任何更新。在这里您可以找到解释。 https://dev.to/pedromassango/flutter-performance-tips-1-const-constructors-4j41
您需要了解一件重要的事情,如果您更改了树中的小部件,则该小部件之后的所有内容都将被删除并重新绘制(未更新)。因此,如果将其定义为const,则不会删除任何内容。没关系(您的问题的答案) 我也建议阅读flutter重建屏幕和更新小部件的方式: https://www.didierboelens.com/2019/09/flutter-internals/
最后一篇关于性能的精彩文章 https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html#performance-considerations
答案 1 :(得分:1)