参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?

Posted

技术标签:

【中文标题】参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?【英文标题】: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');

 

【问题讨论】:

【参考方案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);

 

【讨论】:

以上是关于参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?的主要内容,如果未能解决你的问题,请参考以下文章

参数类型“字符串”不能分配给参数类型“目录”

参数类型“对象?”不能分配给参数类型“字符串”

错误:参数类型“字符串?”不能分配给参数类型“字符串”

错误:参数类型“对象?”不能分配给参数类型“字符串”

“数字”类型的参数不能分配给“数字和字符串”类型的参数

参数类型“字符串”不能分配给 uri.encodeFull() 中的参数类型“Uri”