是应该在类或build()函数中创建Flutter小部件?

Mar*_*ary 2 optimization performance dart flutter

是否有一个一般的经验法则,在哪里创建小部件更优化(假设小部件不依赖于传递给build()的任何东西)?

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

Foo({Key key}) : super(key: key);
Widget _widget = new Container(); // Create here?
Run Code Online (Sandbox Code Playgroud)

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

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

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

在每次build()调用时都会重新创建窗口小部件,这会感觉很昂贵,尤其是在窗口小部件没有更改的情况下.

Col*_*son 5

在Flutter/Dart中构造短期对象通常非常便宜,并且窗口小部件层负责确保在重建时不修改渲染树,除非窗口小部件发生更改.所以缓存小部件在正常情况下没有多大帮助.我倾向于在你的build()方法中构建小部件,除非有理由说这不起作用.