【问题标题】:The argument type 'String' can't be assigned to the parameter type 'Object? Function(Object?, Object?)?'参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?
【发布时间】:2021-08-01 19:48:47
【问题描述】:

我正在使用dart,有这两个错误(参数类型'String'不能分配给参数类型'Object?Function(Object?,Object?)?'。,参数类型'JsonDecoder'可以'不被赋值给参数类型'Map'。)在response.body和data中

Main.dart

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

void main() {
  Map post = new Map();

  Future<dynamic> getdata() async {
    var url = Uri.parse('https://jsonplaceholder.typicode.com/posts/1');
    var response = await http.get(url);
    if (response.statusCode == 200) {
      var data = convert.JsonDecoder(response.body);
      post.addAll(data);
    }
  }

  print('please wait..');
  getdata();
  print('Your data is $post');
}
 

【问题讨论】:

    标签: dart


    【解决方案1】:

    使用 jsonDecode 代替 convert.JsonDecoder。因为 JsonDecoder 返回一个自身的实例。由于您的变量 post 是 Map 类型,因此无法将其添加到其中。如果您使用jsonDecode,它将返回给您一张地图。这也是第一个错误的原因。

    您正在尝试将 JsonDecoder 的实例打印为字符串。

    检查以下内容,

    import 'dart:async';
    import 'dart:convert';
    import 'package:http/http.dart' as http;
    
    void main() {
      Map<String, dynamic> post = new Map();
    
      Future<dynamic> getdata() async {
        var url = Uri.parse('https://jsonplaceholder.typicode.com/posts/1');
        var response = await http.get(url);
        if (response.statusCode == 200) {
          var data = jsonDecode(response.body);
          post.addAll(data);
        }
      }
    
      print('please wait..');
      getdata();
      print($post);
    }
     
    

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 2021-12-14
      • 1970-01-01
      • 2021-09-03
      • 2021-10-10
      • 1970-01-01
      • 2021-11-06
      • 2021-08-05
      • 2021-07-07
      相关资源
      最近更新 更多