为什么 http.post 不是异步函数

Why is http.post not an async function

我正在用 dart 开发一个应用程序。我使用 http 包。 我从 documentation:

复制了示例代码
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}');
 

并得到这个错误:

Error: The await expression can only be used in an async function.

我不知道为什么这不起作用。这是他们自己的例子。

您需要确保您的代码是在 Future 函数中编写的,如下所示:

void yourFunction() async {
  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}');
}

或者,如果您不能这样做,请使用 .then() 语法

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