transpose<T> function

List<List<T>> transpose<T>(
  1. List<List<T>> matrix
)

Transpose matrix. Assumes matrix is uniform. Good for making UI with less thinking. Consider:

Row(children: [Spacer(), ...transpose([
  [Text("Live voltage:"),Text("${widget._iface.liveVoltage}")],
  [Text("Live current:"),Text("${widget._iface.liveCurrent}")],
  [Text("Set voltage:"),Text("${widget._iface.voltageSetpoint}")],
  [Text("Set current:"),Text("${widget._iface.currentSetpoint}")],
]).map((e) => Column(children: e, crossAxisAlignment: CrossAxisAlignment.end,)).toList(), Spacer()])

Implementation

List<List<T>> transpose<T>(List<List<T>> matrix) {
  if (matrix.length == 0) {
    return [];
  }
  List<List<T>> result = [];
  for (var i = 0; i < matrix[0].length; i++) {
    result.add([]);
    for (var j = 0; j < matrix.length; j++) {
      result[i].add(matrix[j][i]);
    }
  }
  return result;
}