Какой из следующих двух кодов лучше с точки зрения эффективности выполнения? - PullRequest
0 голосов
/ 11 июля 2020

Могу я спросить, какой из следующих двух кодов лучше с точки зрения эффективности выполнения? Какой из них рекомендуется?

 Widget buildItem(){

    final List<Widget> items = [];

    if(this.widget.showItem1){
      items.add(Row(children: <Widget>[
        Container(),
        Container(),
      ]));
    }

    if(this.widget.showItem2){
      items.add(Row(children: <Widget>[
        Container(),
        Container(),
      ]));
    }

    if(this.widget.showItem3){
      items.add(Row(children: <Widget>[
        Container(),
        Container(),
      ]));
    }

    return Column(children: items);
  }
Widget buildItem(){
    return Column(children: <Widget>[
      this.widget.showItem1 ?  Row(children: <Widget>[Container(), Container(),]): Container(),
      this.widget.showItem2 ?  Row(children: <Widget>[Container(), Container(),]): Container(),
      this.widget.showItem3 ?  Row(children: <Widget>[Container(), Container(),]): Container(),
    ],);
  }

1 Ответ

2 голосов
/ 11 июля 2020

Есть третий вариант, который IMO лучше. Он использует коллекцию , если

Widget buildItem(){
    return Column(children: <Widget>[
      if (this.widget.showItem1) Row(children: <Widget>[Container(), Container()]),
      if (this.widget.showItem2) Row(children: <Widget>[Container(), Container()]),
      if (this.widget.showItem3) Row(children: <Widget>[Container(), Container()])
    ]);
  }

Это сочетание двух подходов.

...