0

我得到了下面的课程

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 中构建此功能?

4

1 回答 1

2

你可以使用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());
  }
}

这个ListView答案描述了和之间的区别ListView.builder

于 2021-05-27T20:21:19.173 回答