【问题标题】:Dart/Flutter: automatically generate the subwidget in a classDart/Flutter:自动生成类中的子小部件
【发布时间】:2021-05-27 13:28:04
【问题描述】:

我上了下面的课

class MyWidget extends StatelessWidget {

    final int num;
    MyWidget({this.num});

  @override
  Widget build(BuildContext context) {
  WidgetA(),
  WidgetA(),
  WidgetA(),
//the WigetA will repeate itself depending on the num.
}

}

如果MyWidget(num = 3),那么MyWidget中会有3个WigetA。

如何在 WigetA 中构建这个函数?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您可以使用ListView.builder。下面是一些示例代码:

    class MyWidgetListViewBuilder extends StatelessWidget {
      final int widgetCount;
    
      MyWidgetListViewBuilder(this.widgetCount);
    
      @override
      Widget build(BuildContext context) {
        return ListView.builder(
          itemCount: widgetCount,
          itemBuilder: (context, index) {
            return WidgetA();
          },
        );
      }
    }
    
    class WidgetA extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Text('I appear as often as necessary');
      }
    }
    

    当然也可以使用单独的函数构建List<WidgetA>

    class MyWidgetListView extends StatelessWidget {
      final int widgetCount;
    
      MyWidgetListView(this.widgetCount);
      
      List<WidgetA> _buildWidgetAList() {
        final widgetAList = <WidgetA>[];
        for (var i = 0; i < widgetCount; i++) {
          widgetAList.add(WidgetA());
        }
        return widgetAList;
      }
    
      @override
      Widget build(BuildContext context) {
        return ListView(children: _buildWidgetAList());
      }
    }
    

    This 回答描述了ListViewListView.builder 之间的区别。

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 2021-01-17
      • 2021-08-26
      • 1970-01-01
      • 2020-01-29
      • 2021-04-16
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多