【问题标题】:Dart: cannot convert List<dynamic> to List<Map<String, dynamic>> Json_TableDart:无法将 List<dynamic> 转换为 List<Map<String, dynamic>> Json_Table
【发布时间】:2021-03-27 04:15:11
【问题描述】:

我正在尝试从 Dart/Flutter 应用程序中的 Rest API 解析数据。 JSON 在根中包含一个名为 budgets 的字段,其中包含单词列表。我想从这个 JSON 中获取一个列表,并从带有包 json_table 的 Json 中显示表。

class _PresupuestoPageState extends State<PresupuestoPage> {

  List <Map<String, dynamic>> _data;

  @override
  void initState() {
    super.initState();
    fetchData();
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Presupuesto"),
        centerTitle: false
      ),
      body: Container(
        alignment: Alignment.center,
        child: _data != null
            ? JsonTable(
                _data,
              )
            : Text("Loading..."),
      ),
    );
  }

Future<void> fetchData() async {
    try {
      final response =
          await http.get("http://pr_laravel.loc/api/budgets");
      if (response.statusCode == 200) {
        print(response.body);
        setState(() {
          _data = jsonDecode(response.body) as List;
        });
      } else {
        print("Some error: ${response.statusCode}");
      }
    } catch (e) {
      print(e);
    }
  }

}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:
    List<YourModel> temp = _data.map((data) => YourModel.fromJson(data)).toList();
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
    【解决方案2】:

    只需将_data 的类型从List &lt;Map&lt;String, dynamic&gt;&gt; 更改为List &lt;dynamic&gt;

    【讨论】:

    • 这给我发送了这个错误:type '_InternalLinkedHashMap' is not a subtype of type 'List' in type cast
    • 那是因为您使用的是动态的列表项,因为 Map 尝试将每个列表项转换为 Map()
    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2021-05-20
    • 2020-09-04
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多