我正在使用Stream阅读文件,如下所示。
Stream<List<int>> stream = new File(filepath).openRead();
stream
.transform(UTF8.decoder)
.transform(const LineSpilitter())
.listen((line){
// TODO: check if this is the last line of the file
var isLastLine;
});
我想检查listen()中的行是否是文件的最后一行。
答案 0 :(得分:3)
我认为你不能检查当前的数据块是否是最后一个 您只能传递关闭流时调用的回调。
Stream<List<int>> stream = new File('main.dart').openRead();
stream.
.transform(UTF8.decoder)
.transform(const LineSpilitter())
.listen((line) {
// TODO: check if this is the last line of the file
var isLastLine;
}
,onDone: (x) => print('done')); // <= add a second callback
答案 1 :(得分:0)
@GünterZöchbauer的答案有效时,streams的last
属性完全可以满足您的要求(我想飞镖团队在过去5年中添加了此功能)。
Stream<List<int>> stream = new File('main.dart').openRead();
List<int> last = await stream.last;
但是请注意:无法收听流并使用await stream.last
。
这将导致错误:
StateError(错误状态:流已经被监听。)