小编Tob*_*aun的帖子

缓存子部件与重新创建它们

我不确定缓存小部件实例并在build()方法中重用它是否会产生显着差异。

假设我们有两个小部件类:

class ParentWidget extends StatelessWidget {
  ParentWidget({Key key})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container( // or some other widgets that define the ui
      child: ChildWidget(/*...*/),
    );
  }
}

class ChildWidget extends StatelessWidget {
  ChildWidget({Key key}) : super(key: key); // no constant

  @override
  Widget build(BuildContext context) {
    /*
     * returns some Widget
     */
  }
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,每次 Flutter 调用build()ParentWidget,都会创建一个新元素ChildWidget并将其附加到元素树中的同一元素。除非 ifconst ChildWidget可用(例如ChildWidget有一个 const 构造函数)。

但是,我们可以像这样缓存孩子:

class …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout

7
推荐指数
1
解决办法
1678
查看次数

标签 统计

dart ×1

flutter ×1

flutter-layout ×1