首页 > 解决方案 > 参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?

问题描述

我正在使用飞镖并且有这两个错误(参数类型'String'不能分配给参数类型'Object?Function(Object?,Object?)?'。,参数类型'JsonDecoder'不能是在 response.body 和 data 中分配给参数类型 'Map<dynamic, dynamic>'.)

主要.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

解决方案


使用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);
}
 

推荐阅读