无法将参数类型“字符串”分配给参数类型“对象?函数(对象?,对象?)?

时间:2021-08-01 19:48:47

标签: dart

我正在使用 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');
}
 

1 个答案:

答案 0 :(得分:1)

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

您正在尝试将 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);
}