1

Here I am trying to fetch all the data from the api using flutter http package. I am getting an error

"type 'int' is not a subtype of type 'String?'"

Here is the link where I am trying to fetch data from

https://wrestlingworld.co/wp-json/wp/v2/posts/128354

Here is my model

class NewsModel {
  int? id;
  String? date;
  String? slug;
  String? status;
  Title? title;
  Title? content;
  List<OgImage>? ogImage;
  String? author;

  NewsModel(
      {this.id,
        this.date,
        this.slug,
        this.status,
        this.title,
        this.content,
        this.ogImage,
        this.author});

  NewsModel.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    date = json['date'];
    slug = json['slug'];
    status = json['status'];
    title = json['title'] != null ? new Title.fromJson(json['title']) : null;
    content =
    json['content'] != null ? new Title.fromJson(json['content']) : null;
    if (json['og_image'] != null) {
      ogImage = <OgImage>[];
      json['og_image'].forEach((v) {
        ogImage!.add(new OgImage.fromJson(v));
      });
    }
    author = json['author'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['date'] = this.date;
    data['slug'] = this.slug;
    data['status'] = this.status;
    if (this.title != null) {
      data['title'] = this.title!.toJson();
    }
    if (this.content != null) {
      data['content'] = this.content!.toJson();
    }
    if (this.ogImage != null) {
      data['og_image'] = this.ogImage!.map((v) => v.toJson()).toList();
    }
    data['author'] = this.author;
    return data;
  }
}

class Title {
  String? rendered;

  Title({this.rendered});

  Title.fromJson(Map<String, dynamic> json) {
    rendered = json['rendered'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['rendered'] = this.rendered;
    return data;
  }
}

class OgImage {
  String? url;

  OgImage({this.url});

  OgImage.fromJson(Map<String, dynamic> json) {
    url = json['url'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['url'] = this.url;
    return data;
  }
}

Here is my controller

import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:wrestling_news_app/Model/NewsModel.dart';
import 'package:http/http.dart' as http;


class NewsController with ChangeNotifier{
  String urlnews = "https://wrestlingworld.co/wp-json/wp/v2/posts?categories=22";
  List<NewsModel> _news = [];

  Future<bool> getNews() async {
    var url = Uri.parse(urlnews);
    // var token = storage.getItem('token');
    try {
      http.Response response = await http.get(url);
      print(response.body);
      var data = json.decode(response.body) as List;
      // print(data);
      List<NewsModel> temp = [];
      data.forEach((element) {
        NewsModel product = NewsModel.fromJson(element);
        temp.add(product);
      });
      _news = temp;
      notifyListeners();
      return true;
    } catch (e) {
      print(e);
      return false;
    }
  }
  List<NewsModel> get allNews {
    return [..._news];
  }

  NewsModel getEventDetails(int id){
    return _news.firstWhere((element) => element.id == id);
  }


}

Here is the code where I tried to output the code:

   Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: ListView.builder(
                    physics: const ClampingScrollPhysics(),
                      shrinkWrap: true,
                      itemCount: allNews.length,
                      itemBuilder: (context, i) {
                        return Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: NewsCard(
                              title: allNews[i].title!.rendered!,
                          desciption: allNews[i].content!.rendered!,
                          ),

                        );
                      }),)

Previously I tried to fetch using FuturreBuilder. But With future builder I couldnt fetch the details. for that reason I am using this method to fetch data from the api. Can you please answer me what is wrong with my code?

Here is my api response

[{"id":128640,"date":"2022-11-04T15:09:58","date_gmt":"2022-11-04T09:39:58","guid":{"rendered":"https:\/\/wrestlingworld.co\/?p=128640"},"modified":"2022-11-04T15:10:04","modified_gmt":"2022-11-04T09:40:04","slug":"impact-knockouts-tag-team-championship-match-announced-for-over-drive-2022","status":"publish","type":"post","link":"https:\/\/wrestlingworld.co\/news\/impact-knockouts-tag-team-championship-match-announced-for-over-drive-2022","title":{"rendered":"Impact Knockouts Tag Team Championship Match Announced for Over Drive"},"content":{"rendered":"\n<p>Impact Knockouts Tag Team Championships will be on the line at Over Drive on November 18th. It has <a href=\"https:\/\/impactwrestling.com\/2022\/11\/03\/tasha-steelz-savannah-evans-look-to-topple-the-death-dollz-in-knockouts-world-tag-team-title-showdown-at-over-drive\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">been announced<\/a> that Death Dollz (Taya Valkyrie and Jessicka) will be defending their titles against Tasha Steelz and Savannah
I/flutter (12372): type 'int' is not a subtype of type 'String?'
13
  • can you include your api response too? Commented Nov 4, 2022 at 9:49
  • try int.parse(); refer Commented Nov 4, 2022 at 9:51
  • I am getting 200 status from api call. @eamirho3ein Commented Nov 4, 2022 at 9:54
  • Where should I include the code you wrote? @RavindraS.Patil Commented Nov 4, 2022 at 9:54
  • @sakibOvi I ask for api response not api status code. Commented Nov 4, 2022 at 9:56

2 Answers 2

5

change String? author to int? author. I see api return "author": 6 type is int.

Sign up to request clarification or add additional context in comments.

Comments

-2

final Author : 6; Error Causer

This Issue Is you are Getting the Author as Int From The Api you given the type as String? In The Model If You Change The Type To Int The Problem gets Resolved

3 Comments

I changed the Id type to String still same
Edited Please Do check Now
Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.