У меня есть документ PDF в режиме рендеринга с ограничением, что Я могу открывать только одну страницу за раз . Я ударил несколько виджетов в ListView.builder
, которые запрашивают компонент, который инкапсулирует открытый PDF-документ, для визуализации страницы, возвращая изображение этой PDF-страницы. Так у меня есть, например. 7 «параллельный» (в обычном смысле этого слова) рендеринг запрашивает этот код в документе. Что мне нужно, это заказать их, и для этого было бы удобно использовать для этого пользователя RX.
Вообще, я представляю реализацию, подобную этой:
Observable<RenderingRequest> _requests = ...;
Component() {
_requests.someMagicOperatorThatSuspendTheFurtherEmissionUntilProcessingIsComplete(_processItem);
}
Future<void> _processItem(RenderingRequest request) {
final Page page = await _document.openPage(request.index);
final Image image = await _convertToImage(page);
await page.close();
// send processed image through a sink to a subscriber that awaits this particular image, for instance
}
Но как на самом деле задушить другие запросы'обработка, пока тот, который в настоящее время зарегистрирован, не завершится? Это вообще возможно?