参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?
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
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);
【讨论】:
以上是关于参数类型“字符串”不能分配给参数类型“对象?函数(对象?,对象?)?的主要内容,如果未能解决你的问题,请参考以下文章