我想使以下功能同步。一旦流被完全读取,就需要调用“onDataLoaded”。请提出需要进行哪些更改。

String JsonContent="";

new HttpClient().getUrl(Uri.parse(uri))
  .then((HttpClientRequest request)
   {
      request.headers.removeAll(HttpHeaders.ACCEPT_ENCODING);
      return request.close();
   })
  .then((HttpClientResponse response)
   {
      response.transform(UTF8.decoder).listen((contents) {
        JsonContent = contents.toString();
        print(JsonContent);
        //onDataLoaded(JsonContent);
      });
   });

最佳答案

这应该工作

import 'dart:io';
import 'dart:convert' show UTF8;

void main(args) {
String JsonContent="";

new HttpClient().getUrl(Uri.parse(uri))
  .then((HttpClientRequest request)
   {
      request.headers.removeAll(HttpHeaders.ACCEPT_ENCODING);
      return request.close();
   })
  .then((HttpClientResponse response)
   {
      response.transform(UTF8.decoder).listen((contents) {
        JsonContent = contents.toString();
        print(JsonContent);
        //onDataLoaded(JsonContent);
      }, onDone: () => onDataLoaded(JsonContent));
   });

}

void onDataLoaded(String jsonContent) {
  print(jsonContent);
}

10-06 05:43