1

I am trying to display data from an api. When I try to do it on the app it works but once I move the code to the widget it doesn't work the onAppear or Button. I need help on how to refresh the json when the decoder loads it. I think my decoder needs works I am not sure what the issue is.

struct panchangWidgetEntryView : View {
    
    @State private var panchangData: PanchangData?
    
    var entry: Provider.Entry

    var body: some View {
        HStack {
            
            
            
            Text(panchangData?.tithi ?? "")
                .font(.subheadline)
                .padding()
            
            Text(panchangData?.paksha ?? "")
                .font(.subheadline)
                .padding()
            
            
            
        }
    }
    func loadData(){
        guard let url = URL(string: "API URL") else {
            return
        }
        URLSession.shared.dataTask(with: url){ data, response, error in
            guard let data = data else { return }
            if let decodedData = try? JSONDecoder().decode(PanchangData.self, from: data){
                DispatchQueue.main.async {
                    self.panchangData = decodedData
                }
            }
        }.resume()
    }
}
struct PanchangData: Decodable{
    var slon: Double
    var mlon: Double
    var tithinum: Int
    var tithi: String
    var paksha: String
    var tithiTill: String
    var nakshatra: String
    var nakshatraTill: String
    var yoga: String
    var yogTill: String
    var karana: String
    var karanTill: String
    var rashi: String
    var requestsremaining: Int
    var requeststotal: Int
    var plan: String
    var status: String
    var reqdate: String
    var reqtime: String
    
    
} 
geethsg7
  • 205
  • 2
  • 11
  • 1
    Asynchronous API calls like this won’t work in a View in the widget. You should gather the API data in the timeline provider. – jnpdx May 13 '21 at 16:20
  • How do I do that? – geethsg7 May 13 '21 at 16:23
  • https://stackoverflow.com/questions/63976424/how-to-refresh-widget-data – jnpdx May 13 '21 at 16:26
  • The [WidgetKit Code Along](https://developer.apple.com/videos/play/wwdc2020/10034/) uses JSON you can use their code as a good starter. There are 3 parts in the apple developer site – lorem ipsum May 13 '21 at 17:29

0 Answers0