【问题标题】:Flutter error (type 'List<dynamic>' is not a subtype of type 'Map<String, String>')Flutter 错误(类型 'List<dynamic>' 不是类型 'Map<String, String>' 的子类型)
【发布时间】:2021-05-10 00:36:25
【问题描述】:

当我尝试解码 json 时,它给了我错误。

我的模型类

class States{
  String name;
  String abbreviation;
  States({this.name, this.abbreviation});

  factory States.fromJson(Map<String,String> json){
    return States(
      name: json['name'],
      abbreviation: json['abbreviation']
    );
  }
}

我正在使用它的功能

Future<void> search(String text) async {
    String jsonString = await loadData();
    var data = jsonDecode(jsonString);

    var states = States.fromJson(data);//here it gives me error

    if (textEditingController.text == null ||
        textEditingController.text.isEmpty) {
      streamController.add(null);
      return;
    } else {
      print(text);
      streamController.add(states.name.startsWith(text.toLowerCase()));
    }
  }

json 数据

[
    {
        "name": "Alabama",
        "abbreviation": "AL"
    },
    {
        "name": "Alaska",
        "abbreviation": "AK"
    },
]

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您正在传递List&lt;Map&gt;,您的参数是Map&lt;String,dynamic&gt;

    [
        {
            "name": "Alabama",
            "abbreviation": "AL"
        },
        {
            "name": "Alaska",
            "abbreviation": "AK"
        },
    ]
    

    这样做:

     List<State> states = data.forEach((value) {
       States.fromJson(value);
      });
    

    这样您将获得States 的列表,该列表是使用您的list 响应创建的。

    【讨论】:

    • 您好,感谢您的回答,但随后它给出了这样的错误“类型 '_InternalLinkedHashMap' is not a subtype of type 'Map'”
    • @Pokaboom 更新了我的答案。你现在可以检查并告诉我。
    • 它确实给了我这个错误,但是当试图在它上面使用 where 子句时,它说'where'被调用为 null 但是当打印状态时它确实给了我地图,如果可以的话帮帮我?
    • @Pokaboom 你能分享你添加where的代码吗?
    • streamController.add(states.where((element) => element.name.startsWith(text)));这里的文字是我从论点中得到的,在我的最后一条评论中很抱歉,它确实不是我那个错误
    猜你喜欢
    • 2021-04-06
    • 2023-01-07
    • 2022-11-02
    • 2021-04-13
    • 2019-08-18
    • 2019-03-23
    • 2019-01-22
    • 2021-07-01
    相关资源
    最近更新 更多