何时关闭 Flutter 应用程序中的 HTTP 客户端?

flo*_*ter 18 dart flutter

我的 Flutter 移动应用程序与我的后端服务器通信。该文件说这是更好地利用Client类(IOClient)比普通的getput等方法来维护多个请求到同一台服务器持续连接。 文档还说:

使用完毕后关闭每个客户端很重要;否则会导致 Dart 进程挂起。

我不明白什么时候需要关闭客户端,因为几乎所有的应用程序屏幕都需要到同一个服务器的 HTTP 连接。这里的最佳做法是什么?

更新:

是否可以Client仅在应用程序终止之前关闭,还是应该在每次应用程序隐藏(进入paused状态)时关闭它?

Ala*_*ine 1

我个人认为,在每次用户操作后关闭客户端是最好的做法。

我所说的“用户操作”可以由多个API请求组成。

所以我认为最好的是这样的:

var client = http.Client();
try {
  var response = await client.post(
      Uri.https('my-api-site.com', 'users/add'),
      body: {'firstname': 'Alain', 'Lastname': 'Deseine'});
  var Response = jsonDecode(utf8.decode(response.bodyBytes)) as Map;
  ...
  // Add here every API request that you need to complete the users action
} finally {
  // Then finally destroy the client.
  client.close();
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答,但我认为这不是正确的方法。当使用设计良好的 API 时,用户操作应该只需要一个 API 请求。如果您在每次用户操作后关闭客户端,则完全消除了使用客户端的好处。 (3认同)