Data Pipeline Patterns
Pipeline Stages
Named intermediate lists make a pipeline easier to inspect and test.
Program
Play the program to select tasks and then transform their titles.
pipeline_stages.dart
void main() {
var tasks = [
{'title': 'docs', 'done': true},
{'title': 'tests', 'done': false},
{'title': 'deploy', 'done': false},
];
var showDone = ;
var selected = <Map<String, Object>>[];
for (var task in tasks) {
if (showDone || task['done'] == false) selected.add(task);
}
var titles = selected.map((task) => (task['title'] as String).toUpperCase()).toList();
print('tasks=${titles.join(",")}');
}
void main() {
var tasks = [
{'title': 'docs', 'done': true},
{'title': 'tests', 'done': false},
{'title': 'deploy', 'done': false},
];
var showDone = ;
var selected = <Map<String, Object>>[];
for (var task in tasks) {
if (showDone || task['done'] == false) selected.add(task);
}
var titles = selected.map((task) => (task['title'] as String).toUpperCase()).toList();
print('tasks=${titles.join(",")}');
}
stage names
`selected` and `titles` make intermediate data visible.
map
`selected.map(...)` transforms each selected task.
toUpperCase
String methods can be part of the transform stage.