在Flutter文档的“编写您的第一个应用程序”教程中,步骤4名为“步骤4:创建无限滚动ListView”,要求您创建2个变量,显示在此处:
class RandomWordsState extends State<RandomWords> {
final _suggestions = <WordPair>[];
final _biggerFont = const TextStyle(fontSize: 18.0);
...
}
Run Code Online (Sandbox Code Playgroud)
为什么const在第三行使用关键字?我来自C#和JavaScript背景,我不习惯在赋值语句的右侧看到它。我注意到,如果将其删除,它仍然可以按预期工作。您能以拉面语来解释为什么要使用它,什么时候应该这样做?我猜想这太过分了,我不必使用它,但我只是想确定一下。
我不认为这是重复的,因为这篇文章中的答案非常适合解释我的问题,而在另一篇文章中找不到,更不用说另一篇文章是两部分的问题,使用Google时没人会找到。
Bla*_*nka 15
从dart新闻网站:
“
const”的含义在Dart中更加复杂和微妙。const修改值。您可以在创建收藏夹(如const [1, 2, 3])和构造对象(而不是new)(如)时使用它const Point(2, 3)。在这里,const意味着可以在编译时完全确定对象的整个深度状态,并且对象将被冻结并且完全不可变。
用我的话说,您可以使用诸如或的const构造函数(定义为的构造函数const)。const Text()new Text()
如果您使用const Text():这将仅分配一个内存空间,而当您添加另一个const Text()时,它将重用同一对象,但是new Text()将始终分配新的内存空间。因此,使用const可以提高程序性能(不是那么多的性能,而是更少的内存分配)。另外,const如果需要重用,则可以将类构造函数定义为。
我注意到,如果将其删除,它仍然可以按预期工作。
这是因为在创建对象/实例时使用Dart 2 new和const关键字optional是可以由Dart VM处理的。最初存在一些问题,但现在已解决。
即使您避免了const/ new这些也会被Dart VM添加。将这两个关键字设置为可选的原因是在Flutter中,您必须在任何地方键入这两个关键字(例如,在小部件树中)。
这是另一个问题,其中一些答案可能会有所帮助。
flutter 使用什么颜色系统以及为什么我们使用 `const Color` 而不是 `new Color`
正如已接受的答案所解释的,const 构造函数是一个小的优化。在 dart 中,const MyObject(42) 只会被分配一次,即使你调用它数百次。这意味着更少的内存分配 > 更快
| 归档时间: |
|
| 查看次数: |
5588 次 |
| 最近记录: |