#flutter #dart-isolates
#flutter #dart-изолирует
Вопрос:
Чтобы ускорить загрузку изображений профиля, я создал изолированный файл и кэшировал его в нем.
Код для загрузки изображения профиля
influencers.forEach(
(influencer) {
Isolate.spawn(
FileDownloadController.imagePreload,
influencer.profileImgUrl,
);
},
);
imagePreload в FileDownloadController
static void imagePreload(String url) {
CachedNetworkImage(imageUrl: url);
}
Мое намерение
- Когда runApp() выполняется для запуска приложения, оператор influencers.forEach() работает для кэширования изображения.
- При переходе к экрану influencer используются предварительно кэшированные изображения.
Это правильно?
Мне сказали, что ‘Isolate’ не может быть задействован в другом ‘Isolate’. Не было бы бесполезно кэшировать изображения таким образом?
Я хочу знать, правильно ли я понял «Изолировать».
Комментарии:
1. Зачем вам нужен isolate?
2. @ChristopherMoore Потому что приложение загружает много изображений. Это похоже на загрузку нескольких изображений несколькими потоками.
3. Изоляты не являются потоками. У них нет общей памяти. Я не знаю, какова реализация CachedNetworkImage, но это, вероятно, невозможно.
4. Кроме того, способ, которым вы реализовали изоляцию, вероятно, очень неэффективен. Стоимость запуска изоляции, вероятно, слишком высока, чтобы оправдать создание новой для каждого изображения, которое вы хотите кэшировать.
5. @ChristopherMoore _OH ….. Если я работаю в нескольких ‘Isolate’, не выполняется ли несколько заданий одновременно?