【问题标题】:List<dynamic> is not a subtype of Map<String, dynamic> - FlutterList<dynamic> 不是 Map<String, dynamic> 的子类型 - Flutter
【发布时间】:2021-06-09 03:41:21
【问题描述】:

我正在尝试从如下所示的服务器获取数据:

[
  {
   "key": "value",
   "key": "value",
   "key": "value",
   "key": "value",
   "key": [
            "key": "value",
            "key": "value",
          ],
   "key": "value",
   "key": "value",
  }
]

我的模型类有这个: 更新:

List<VehicleDetails> vehicleDetailsFromJson(String str) => List<VehicleDetails>.from(json.decode(str).map((x) => VehicleDetails.fromJson(x)));


factory ModelClassName.fromJson(Map<String, dynamic> json) => ModelClassName()

我的服务类有这个:更新:

Future<List<ModelClassName>> fetchDetails() async{
  final response = await get(Uri.parse('$url'),
      headers: {
        'Authorization': "bearer _accessToken",
        'Content-Type': 'application/json'
      },);
  return modelClassFromJson(response.body);
}

我正在使用 FutureBuilder() 来获取和更新我的屏幕

FutureBuilder(
            future: fetchDetails(),
            builder: (_, snapshot) {
              print(snapshot.error);
              if(snapshot.connectionState == ConnectionState.done)
                return Widget();
              else
                return Center(
                  child: CircularProgressIndicator(),
                );  
            },
          ),

我得到的错误:

type 'double' 不是 type 'int' 的子类型

我该如何度过这个难关?请帮忙。

【问题讨论】:

  • jsonDataList&lt;Map&lt;String, dyanmic&gt;&gt;,因为 JSON 响应以 [ 开头。这表明它是一个 JSON 数组。

标签: flutter dart flutter-futurebuilder


【解决方案1】:

更改您的 modelClassFromJson 函数,例如

ModelClassName modelClassFromJson(String str) {
    final jsonData = json.decode(str);
    return ModelClassName.fromJson(jsonData[0]);
}

【讨论】:

  • 进行上述更改后,我得到了这个:type 'double' is not a subtype of type 'int'
  • @ManishPaul 现在问题出现在您的ModelClassName 类中,检查哪个变量是整数,然后在ModelClassName 中的ModelClassName.fromJson 中将变量分配更改为yourIntVariable = json['variableKey'] != null ? int.parse(json['variableKey'].toString()) : 0.0; 类似的东西。 (您可以对任何 double 变量执行相同操作,例如 `double.parse(...)'。)
  • 您好,请检查上面的代码。我已经更新了我的模型和服务类。虽然我仍然收到type 'double' is not a subtype of type 'int'
  • 你能显示你的VehicleDetails类的变量吗?您需要在 VehicleDetails 类中重复相同的操作(我在上一条评论中已定义)以及整数变量。
猜你喜欢
  • 2023-01-07
  • 2021-07-11
  • 2021-04-06
  • 2019-09-02
  • 2019-08-18
  • 2019-04-03
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多