How can I generate an array of DataColumn in one single line?

<DataColumn>[
  DataColumn(label: Text('A')),
  DataColumn(label: Text('B')),
  DataColumn(label: Text('C')),
  DataColumn(label: Text('D')),
]

Such as:

list<DataColumn>.gen(['A','B','C','D'], (string) => DataColumn(label: Text(string)));


Solution 1: Lai Lee

I just found the solution, but two lines.

var titles = ['A', 'B', 'C', 'D'];
List.generate(titles.length,(index) => DataColumn(label: Text(titles[index])));


Solution 2: zetsu010

You can use List.generate() like is:

List<String> stringList = ['ACTIVE', 'MODE', 'SEMI', 'AUTO'];

Colum(children: List.generate(stringList.length, (int index) => DataColumn(label: Text(stringList[index])));


Solution 3: jamesdlin

You can use Iterable.map:

var columns = ['A', 'B','C', 'D'].map((s) => DataColumn(label: Text(s))).toList();

or collection-for, which is slightly shorter:

var columns = [for (var s in ['A', 'B', 'C', 'D']) DataColumn(label: Text(s))];