我正在尝试收听目录提供的流。 Flutter Directory Doc。
问题是,如果有9个目录,它只会打印出最后一个目录而跳过其余目录,对于这些概念,我还是很陌生,无法自己调试。
当我尝试在initState中打印注释的侦听器时,它会打印每个目录。
class _MediaFilesState extends State<MediaFiles> {
Directory internalStorage = Directory('/storage/emulated/0/');
WatchlistDatabase watchlistDatabase = WatchlistDatabase();
StreamController<FileSystemEntity> _streamController =
StreamController<FileSystemEntity>();
@override
void initState() {
// TODO: implement initState
super.initState();
checkMediaPath();
_streamController
.addStream(internalStorage.list(recursive: false, followLinks: false));
// _streamController.stream.listen((FileSystemEntity entity) {
// if (entity is File) {
// print(entity.path);
// } else {
// print(entity.path);
// }
// });
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_streamController.close();
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
backgroundColor: Color(0xFF131214),
appBar: AppBar(),
),
body: ListView(
children: <Widget>[
Container(
child: mediaFilesWidget,
),
Container(
height: 400,
width: 250,
child: StreamBuilder(
stream: _streamController.stream,
initialData: 23,
builder: (BuildContext context, snapshot) {
if (snapshot.hasData) {
print(snapshot.data.path);
}
return CircularProgressIndicator();
},
),
)
],
),
);
}
}
答案 0 :(得分:0)
您可以使用https://pub.dartlang.org/documentation/rxdart/latest/rx/Observable/scan.html中的scan
方法/转换器将先前事件中的值收集到值数组中。