参数类型 'String' 不能分配给参数类型 'Uri' .dart 异步

时间:2021-03-21 13:51:55

标签: flutter http dart asynchronous future

我使用具有一个功能的简单异步程序,但出现此错误:

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

void main() {
 print(getData());
}

Future<http.Response> getData() {
 return http.get("https://jsonplaceholder.typicode.com/users");
}

谁能帮我解决这个错误?

2 个答案:

答案 0 :(得分:2)

0.13.0-nullsafety.0 版本开始,“以前允许通过 StringUri 的所有 API 现在都需要 Uri”。 (here)

您可以以 README 为例:

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

var url = Uri.parse('https://example.com/whatsit/create');
var response = await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');

print(await http.read('https://example.com/foobar.txt'));

答案 1 :(得分:0)

从 http 的 0.13.0-nullsafety.0 版本开始,您应该只使用 Uri 代替字符串。

[变更日志] (https://pub.dev/packages/http/changelog)

<块引用>

突破以前允许传递字符串或 Uri 的所有 API 现在都需要 Uri。

所以你应该看起来像这样:

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

void main() {
  print(getData());
}

Future<http.Response> getData() {
  return http.get(Uri.parse("https://jsonplaceholder.typicode.com/users"));
}