【问题标题】:Flutter The argument type 'String' can't be assigned to the parameter type 'Map<String, dynamic>'Flutter 参数类型'String'不能赋值给参数类型'Map<String, dynamic>'
【发布时间】:2021-07-06 20:57:16
【问题描述】:

我想从 PONS API 获取数据时遇到问题。

import 'package:eng_it_translator/model/model.dart';
import 'package:http/http.dart';
import 'dart:convert';

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

class Network {
  Future<Vocabulary> fetchData({String keyword}) async {
    var headers = {
      'X-Secret':
          'XXXXXXXXXXXXX',
    };

    var params = {
      'q': 'house',
      'l': 'deen',
    };
    var query = params.entries.map((p) => '${p.key}=${p.value}').join('&');
    var url = Uri.parse("https://api.pons.com/v1/dictionary?$query");

    var res = await http.get(url, headers: headers);
    if (res.statusCode == 200) {
      var data = json.decode(res.body);
      var realdata =
          List<Vocabulary>.from(data).map((x) => Vocabulary.fromJson(x));
      print(realdata);
    } else {
      throw Exception('http.get error: statusCode= ${res.statusCode}');
    }
  }
}

参数类型“Vocabulary”不能分配给参数类型“Map”。

DATA 的主体在 Map 结构中,但我无法将其转换为 List。

class Vocabulary {
  String lang;
  List<Hits> hits;

  Vocabulary({this.lang, this.hits});

  Vocabulary.fromJson(Map<String, dynamic> json) {
    lang = json['lang'];
    if (json['hits'] != null) {
      hits = new List<Hits>();
      json['hits'].forEach((v) {
        hits.add(new Hits.fromJson(v));
      });
    }
  }

【问题讨论】:

    标签: api flutter fetch


    【解决方案1】:

    我认为你必须将 json 转换为 Map 试试这个

           hits: json['hits'] != null
          ? json['hits'].map<Hits>((v) => new Hits.fromJson(v)).toList()
    

    【讨论】:

      【解决方案2】:

      您可以通过添加 toList() 将您的词汇数据转换为列表

      List.from(data)
                    .map((x) => Vocabulary.fromJson(x))
                    .toList());
      

      【讨论】:

      • 是的,这行得通。谢谢,现在是解决另一个错误的时候了... :)
      猜你喜欢
      • 2022-11-27
      • 2022-11-22
      • 2021-03-23
      • 2023-04-05
      • 2020-12-27
      • 2020-12-15
      • 1970-01-01
      • 2021-08-29
      相关资源
      最近更新 更多