Я использую GetFiles, завернутый в метод, как показано ниже:
public static String[] GetFilesFrom(String searchFolder, String[] filters, bool isRecursive)
{
List<String> filesFound = new List<String>();
var searchOption = isRecursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
foreach (var filter in filters)
{
filesFound.AddRange(Directory.GetFiles(searchFolder, String.Format("*.{0}", filter), searchOption));
}
return filesFound.ToArray();
}
Его легко использовать:
String searchFolder = @"C:\MyFolderWithImages";
var filters = new String[] { "jpg", "jpeg", "png", "gif", "tiff", "bmp" };
var files = GetFilesFrom(searchFolder, filters, false);
Глядя на эту иллюстрацию для MVVM ( источник ):
Вы можете видеть, что есть отдельные модели данных и бизнес-логики. Однако, используя BLoC , на самом деле нет такого различия. Классы, которые обрабатывают бизнес-логику, также обрабатывают данные, что также может применяться к MVVM .
Чтобы быть справедливым, на самом деле нет большой разницы. ключевая часть , которую нужно убрать, одинакова для обоих: Изоляция бизнес-логики от пользовательского интерфейса. Следовательно, реализация любого из двух будет выглядеть очень похоже, то есть с использованием Stream
и StreamBuilder
.
Кроме того, существуют пакеты, облегчающие работу с Stream
, например, rxdart
, это то, что команда Flutter использует, насколько мне известно.