性能/内存使用情况:内联事件处理程序与预定义函数

时间:2018-08-22 13:32:35

标签: flutter

考虑以下两个小部件:

class TestPage extends StatelessWidget {
  void _sayOutLoud(String message) {
    // ...
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        RaisedButton(
          child: Text('Say foo'),
          onPressed: () => _sayOutLoud('Foo!'),
        ),
        RaisedButton(
          child: Text('Say bar'),
          onPressed: () => _sayOutLoud('Bar!'),
        )
      ],
    );
  }
}

vs。

class TestPage extends StatelessWidget {
  void _onFooTap() {
    _sayOutLoud('Foo!');
  }

  void _onBarTap() {
    _sayOutLoud('Bar!');
  }

  void _sayOutLoud(String message) {
    // ...
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        RaisedButton(
          child: Text('Say foo'),
          onPressed: _onFooTap,
        ),
        RaisedButton(
          child: Text('Say bar'),
          onPressed: _onBarTap,
        )
      ],
    );
  }
}

一个使用内联lambda方法,而另一个则不使用。这意味着只要调用Function,一个小部件就会生成一个新的build实例,而另一个小部件始终将相同的实例传递给小部件构造函数。

想象一下,小部件经常被重建(每秒10次)。

使用lambda方法是否会对性能产生负面影响?还有其他使用lambda方法存在问题的示例吗?

0 个答案:

没有答案