Ошибка: значение типа 'Post' не может быть присвоено переменной типа 'MapEntry ' - PullRequest
0 голосов
/ 22 апреля 2020

Я сейчас экспериментирую с API. Я создал класс модели для обработки данных.

import 'package:flutter/foundation.dart';

class Post {
  final int id;

  Post({
    @required this.id,
  });

  factory Post.fromJson(Map<String, dynamic> json) {
    return Post(
      id: json['graphql']['shortcode_media']['id'] as int,
    );
  }
}

, после этого я создал класс HttpServiceclass для вызова API

import 'dart:convert';

import 'package:http/http.dart';
import 'package:insta/model/abstractmedia.dart';

class HttpService {
  final String postsURL = "https://www.instagram.com/p/B-mvkeIlQcP/?__a=1";

  Future<List<Post>> getPosts() async {
    Response res = await get(postsURL);

    if (res.statusCode == 200) {

      Map<String, dynamic> body = jsonDecode(res.body);

      List<Post> posts = body.map(
            (dynamic item) => Post.fromJson(item),).toList();
      return posts;

    } else {
      throw "Can't get posts.";
    }
  }
}

, но в строке httpService получаю ошибку в строке 17

Error: A value of type 'Post' can't be assigned to a variable of type 'MapEntry<dynamic, dynamic>'.

как исправить эту ошибку, я новичок во флаттере

1 Ответ

0 голосов
/ 22 апреля 2020

В этой части вашего кода

List<Post> posts = body.map((dynamic item) => Post.fromJson(item),).toList();

переменная item является ключом вашей карты body. Один из способов решить эту проблему - изменить Post.fromJson(item)) на Post.fromJson(body[item])) или использовать body.forEach

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...