performance - Flutter widget 应该在类中创建还是在 build() 函数中创建?

标签 performance optimization dart flutter

是否有关于在哪里创建更优化的小部件的一般经验法则(假设小部件不依赖于传递到 build() 中的任何内容)?

如果我们在类中创建一个 Widget:

Foo({Key key}) : super(key: key);
Widget _widget = new Container(); // Create here?

我们只在创建类时创建一次。但是,如果这个小部件并不总是在 build() 中使用(例如,后台小部件,或者小部件的可见性由标志确定),则它可能会占用空间。

如果我们在 build() 中创建小部件:

@override
Widget build(BuildContext context) {
Widget widget = new Container(); // Or create here?
  return widget;
}

在每次调用 build() 时都会重新创建小部件,这感觉代价高昂,尤其是在小部件没有更改的情况下。

最佳答案

在 Flutter/Dart 中构造短期对象通常非常便宜,并且 widgets 层负责确保渲染树不会在重建时被修改,除非 widget 发生变化。所以缓存小部件在正常情况下没有多大帮助。我倾向于在您的 build() 方法中构建小部件,除非有原因导致它不起作用。

关于performance - Flutter widget 应该在类中创建还是在 build() 函数中创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704251/

相关文章:

c++ - 编译器添加的优化导致 "final"方法的不同行为

Java 编译器不会自动优化字符串连接?

java - hibernate 按计数排序连接表并返回 pojo 列表

mysql - 并发插入 mysql - 在第一组插入完成之前调用相同的插入存储过程

optimization - Gnu 汇编程序 (GAS) 优化

dart - 如何为整个 MaterialApp 的主题设置背景颜色?

dart - 是否等效于Dart中的Java System.arraycopy?

dart - 在 flutter 中进行导航的其他方法有哪些

java - 具有巨大字符串响应的 Tomcat 性能

php - 此 Mysql SQL Select 查询执行需要 33 分钟