I'm pretty new to Flutter and still struggling to understand a few things. My objective right now is to place map objects inside a list the logic for which that I've written hasn't been kind. I would therefore need suggestions as to how this can be achieved. The code I've written by far is below:
class CartItemProvider with ChangeNotifier {
  Map<String, dynamic> _cartItems = {};
  var _cartItemList = [];
  List<dynamic> _individualItems = [];
  Network network = Network();
  String baseUrl = 'https://achievexsolutions.in/current_work/eatiano/';
  double deliveryCost = 40;
  double discountCost = 50;
  Map<String, dynamic> get cartItems {
    return {..._cartItems};
  }
  Future<void> fetchCartItems() async {
    final url = Uri.parse(baseUrl + 'api/auth/cart');
    final response = await http.get(url, headers: {
      'Authorization': 'Bearer ${network.getToken()}',
      'Accept': 'application/json'
    });
    Cart cartJson = cartFromJson(response.body);
    _cartItems = cartJson.toJson();
    _cartItems.forEach((key, values) => _cartItemList.add(values['data'])); 
    print(_cartItems);
  }
}
The error that I get says Unhandled Exception: NoSuchMethodError: The method 'map' was called on null.
{
    "status": "success",
    "data": [
        {
            "cart_id": 9,
            "restaurant_id": "6",
            "product_id": "8",
            "restaurant_name": "Mocambo",
            "product_name": "Kaju Paneer",
            "product_description": "Tasty yummy paneer gravy dish",
            "product_image": "/public/assets/product/lgml5L03-19-41.jpg",
            "product_selling_price": "320",
            "product_status": "active",
            "product_quantity": "41",
            "product_rating": null,
            "product_rating_count": null,
            "product_sell_count": null,
            "quantity": "1"
        }
    ]
}
I would like to store the objects in the list named data which is my main priority. The model class for the above response is below:
import 'package:meta/meta.dart';
import 'dart:convert';
Cart cartFromJson(String str) => Cart.fromJson(json.decode(str));
String cartToJson(Cart data) => json.encode(data.toJson());
class Cart {
  Cart({
    required this.status,
    required this.data,
  });
  String status;
  List<Datum> data;
  factory Cart.fromJson(Map<String, dynamic> json) => Cart(
        status: json["status"],
        data: List<Datum>.from(json["data"].map((x) => Datum.fromJson(x))),
      );
  Map<String, dynamic> toJson() => {
        "status": status,
        "data": List<dynamic>.from(data.map((x) => x.toJson())),
      };
}
class Datum {
  Datum({
    required this.cartId,
    required this.restaurantId,
    required this.productId,
    required this.restaurantName,
    required this.productName,
    required this.productDescription,
    required this.productImage,
    required this.productSellingPrice,
    required this.productStatus,
    required this.productQuantity,
    required this.productRating,
    required this.productRatingCount,
    required this.productSellCount,
    required this.quantity,
  });
  int cartId;
  String restaurantId;
  String productId;
  String restaurantName;
  String productName;
  String productDescription;
  String productImage;
  String productSellingPrice;
  String productStatus;
  String productQuantity;
  dynamic productRating;
  dynamic productRatingCount;
  dynamic productSellCount;
  String quantity;
  factory Datum.fromJson(Map<String, dynamic> json) => Datum(
        cartId: json["cart_id"],
        restaurantId: json["restaurant_id"],
        productId: json["product_id"],
        restaurantName: json["restaurant_name"],
        productName: json["product_name"],
        productDescription: json["product_description"],
        productImage: json["product_image"],
        productSellingPrice: json["product_selling_price"],
        productStatus: json["product_status"],
        productQuantity: json["product_quantity"],
        productRating: json["product_rating"],
        productRatingCount: json["product_rating_count"],
        productSellCount: json["product_sell_count"],
        quantity: json["quantity"],
      );
  Map<String, dynamic> toJson() => {
        "cart_id": cartId,
        "restaurant_id": restaurantId,
        "product_id": productId,
        "restaurant_name": restaurantName,
        "product_name": productName,
        "product_description": productDescription,
        "product_image": productImage,
        "product_selling_price": productSellingPrice,
        "product_status": productStatus,
        "product_quantity": productQuantity,
        "product_rating": productRating,
        "product_rating_count": productRatingCount,
        "product_sell_count": productSellCount,
        "quantity": quantity,
      };
}
