Flutter/Dart:检查http请求是否成功的简单方法?

Jos*_*zet 5 dart flutter

在使用 Fluttershttp请求库时,我想知道是否有一种简单的方法可以检查请求是否成功,而无需检查状态代码

我看到的大多数代码示例(包括官方代码示例)都会执行以下操作:

http.Response response = await http.Client().get(...);
    
if (response.statusCode == 200) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

然而,这些示例忽略了这样一个事实:所有以 开头的 HTTP 状态代码都2XX被认为是成功的。例如201代表201 Created.

我知道 pythonhttp库有一个简单的ok标志,所以在 python 中可以做这样的事情

if response.ok:
   ...
Run Code Online (Sandbox Code Playgroud)

flutter/dart 中是否有类似的功能,或者我是否必须实施手动检查?

Chr*_*ore 16

您可以创建一个扩展方法来轻松完成此操作:

extension IsOk on http.Response {
  bool get ok {
    return (statusCode ~/ 100) == 2;
  }
}
Run Code Online (Sandbox Code Playgroud)

通过添加上面的扩展,您可以使用response.ok您喜欢的相同响应语​​法。


此扩展的工作原理是通过除以 100 进行截断并将结果与​​ 2 进行比较来隔离第 100 位数字。