flutter: type 'String' is not a subtype of type 'int' of 'index'


I try to get a list of youtube categories with flutter. But i get this message all the time. I’m not very good with models and factory’s yet so i hope you can point in the right direction.

This is my model:

 class YoutubeCategory {
  String? catagoryId;
  String catagoryName;
  String catagoryPosterUrl;
  String catagoryPostDate;

      {required this.catagoryId,
      required this.catagoryName,
      required this.catagoryPostDate,
      required this.catagoryPosterUrl});

  factory YoutubeCategory.fromJson(Map<String, dynamic> json) =>
        catagoryId: json['snippet']['channelId'],
        catagoryName: json['snippet']['title'],
        catagoryPostDate: json['snippet']['publishedAt'],
        catagoryPosterUrl: json['snippet']['thumbnails']['maxres']['url'],

And this is the Future:

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

import '../models/youtube_category.dart';

class YoutubeProvider with ChangeNotifier {
  List<YoutubeCategory> _youtubeCategories = [];

  Future<void> categoryFetchAndSet() async {
    try {
      final url = Uri.parse(
      final response = await http.get(url);

      final items = json.decode(response.body);
      final extractedData = items as Map<String, dynamic>;

      extractedData.forEach((key, value) =>
    } catch (error) {

And this is the json created from Youtube Api:

  "kind": "youtube#playlistListResponse",
  "etag": "mtkdrKhMOsTic_dFeZqG3aYubA8",
  "nextPageToken": "CAEQAA",
  "pageInfo": {
    "totalResults": 19,
    "resultsPerPage": 1
  "items": [
      "kind": "youtube#playlist",
      "etag": "o5B4L3KrFUAQo1NAlED4UPocd8M",
      "id": "PLiwjE2lUypAnz5SFxg4gVLvc5rETpC7rX",
      "snippet": {
        "publishedAt": "2022-03-08T11:28:10Z",
        "channelId": "UCxlSClyfAZM3ZY9ibKDlFDA",
        "title": "Minibieb On Tour",
        "description": "",
        "thumbnails": {
          "default": {
            "url": "https://i.ytimg.com/vi/TItFjTidN8k/default.jpg",
            "width": 120,
            "height": 90
          "medium": {
            "url": "https://i.ytimg.com/vi/TItFjTidN8k/mqdefault.jpg",
            "width": 320,
            "height": 180
          "high": {
            "url": "https://i.ytimg.com/vi/TItFjTidN8k/hqdefault.jpg",
            "width": 480,
            "height": 360
          "standard": {
            "url": "https://i.ytimg.com/vi/TItFjTidN8k/sddefault.jpg",
            "width": 640,
            "height": 480
          "maxres": {
            "url": "https://i.ytimg.com/vi/TItFjTidN8k/maxresdefault.jpg",
            "width": 1280,
            "height": 720
        "channelTitle": "Title",
        "localized": {
          "title": "Minibieb On Tour",
          "description": ""

It’s complex json i guess not sure if my model is ok.

>Solution :

Response for "items" is a List
to print items do as following

List item=extractedData['items'];
for(var data in item)

Leave a Reply Cancel reply