Хорошо, я сам нашел решение. Видимо, работа с API большого провайдера дала мне другой способ перечисления элементов, который фактически сказал мне, что я пытался запустить слушатели дважды.
fileCount = await imgDir.list(recursive: false).length;
и
imgDir.list(recursive: false, followLinks: false)
.listen((FileSystemEntity entity) {
из исходного кода нельзя записать один за другим, так как первый заканчивает работу слушателя. Об этом я узнал, изменив собственный код и перечислив каталоги таким образом.
Stream<FileSystemEntity> files = imgDir.list(recursive: false, followLinks: false);
добавит столько событий, сколько файлов в соответствии с API .., а затем создаст обычный общий список
List<FileSystemEntity> entities = await files.toList();
и затем вы выполняете обычную итерацию, используя итератор или цикл for (), как
for(FileSystemEntity entity in entities) {
... // every file now is available