最新 Flutter 升级后 utf8.decoder 无法工作

bla*_*yak 2 android http dart flutter

APIPostRequest 类一直运行良好,直到发生 flutter 升级并显示错误“参数类型‘Utf8Decoder’无法分配给参数类型‘StreamTransformer’”。使用 ...transform(utf8.decoder)... 将 HttpClientResponse 的对象转换为 String 时...

class APIPostRequest {
  Future<String> apiRequest(String url, Map jsonMap) async {
    HttpClient httpClient = new HttpClient();
    HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));
    request.headers.set('Accept', 'application/json');
    request.headers.set('Content-type', 'application/json');
    request.headers
        .set('Authorization', "Bearer " + UserConstants.userAccessToken);
    request.add(utf8.encode(json.encode(jsonMap)));
    HttpClientResponse response = await request.close();
    String reply = await response.transform(utf8.decoder).join();
    httpClient.close();
    return reply;
  }
}
Run Code Online (Sandbox Code Playgroud)

jam*_*lin 5

请参阅相应的重大变更公告

错误案例(以及如何修复它们):

如果您在代码中看到以下错误,请按以下步骤修复这些错误:

  • 错误:“参数类型‘Utf8Decoder’无法分配给参数类型‘StreamTransformer’。”
    • 如何修复:使用StreamTransformer.bind(Stream)代替Stream.transform(StreamTransformer).
    • 例子
      • foo.transform(utf8.decoder)...
      • utf8.decoder.bind(foo)...