I am trying to load images on Widget for my app. For loading the Image I am using below code,
class ImageLoader: ObservableObject {
@Published var image: UIImage? = nil
private var cancellable: AnyCancellable? = nil
func load(from url: URL) {
cancellable = URLSession.shared.dataTaskPublisher(for: url)
.map {
UIImage(data: $0.data)
}
.replaceError(with: nil)
.receive(on: DispatchQueue.main)
.assign(to: .image, on: self)
}
}
struct AsyncImageView: View {
@ObservedObject private var loader = ImageLoader()
let url: URL
var body: some View {
Group {
if let image = loader.image {
Image(uiImage: image)
.resizable()
.clipped()
.scaledToFit()
} else {
Image(uiImage: UIImage())
}
}
.onAppear {
loader.load(from: url)
}
}
}
And I am calling the above method from Body of Widget like below
AsyncImageView(url: URL(string: contentURL)!)
Issue is image is not getting loaded on Widget.