Dart stream text file line by line
Dart
import 'dart:convert';
import 'dart:io';
Future<int> readLines(String path, void Function(int, String) onLine) async {
final file = File(path);
if (!await file.exists()) {
throw FileSystemException('Missing file', path);
}
var n = 0;
await for (final line
in file.openRead().transform(utf8.decoder).transform(const LineSplitter())) {
if (line.trim().isEmpty) continue;
n++;
onLine(n, line);
}
return n;
}