当我在颤振网络上使用 dart:io 库时,调试时会出现警告.like
[警告]build_web_compilers:web/main.dart 上的入口点:跳过使用 ddc 编译 retgoo_internal|web/main.dart,因为它的一些传递库具有此平台不支持的 sdk 依赖项:
retgoo_internal|lib/protocol/http_aiframework.dart
但是当我使用时import 'package: flutter_web / io.dart';
有一个错误代码,.transform
这里的代码是 http_aiframework.dart 代码
import 'dart:async';
import 'dart:convert';
import 'dart:io';
//import 'package:flutter_web/io.dart';
import '../main.dart';
typedef HttpProgressListener(int totalBytes, int receivedBytes, bool done);
class Http {
static String baseURL;
static bool loadAccessToken() {
return accessToken != null;
}
static bool setAccessToken(String token) {
accessToken = token;
return accessToken != null;
}
static bool removeAccessToken() {
accessToken = null;
return accessToken == null;
}
static _processHeader(
{HttpClientRequest request, Map<String, dynamic> headers}) {
if (headers != null) {
headers.forEach((key, value) {
request.headers.add(key, value);
});
}
if (accessToken != null) {
request.headers.set("Authorization", "Bearer " + accessToken);
}
}
static _processResponse(
{HttpClientResponse response,
HttpProgressListener progressListener}) async {
final int totalBytes = response.contentLength;
int receivedBytes = 0;
String body = await response
.transform( //this is the error code when I use import 'package: flutter_web / io.dart';
StreamTransformer.fromHandlers(
handleData: (data, sink) {
sink.add(data);
if (progressListener != null) {
receivedBytes += data.length;
progressListener(totalBytes, receivedBytes, false);
}
},
handleDone: (sink) {
sink.close();
if (progressListener != null) {
progressListener(totalBytes, receivedBytes, true);
}
},
),
)
.map((v) => utf8.decoder.convert(v))
.join();
return body;
}
static getData({
String baseURL,
String endpoint,
Map<String, dynamic> headers,
HttpProgressListener downloadProgressListener,
dynamic data,
}) async {
final client = HttpClient();
client.userAgent = "AIFramework/";
client.connectionTimeout = Duration(seconds: 30);
HttpClientRequest request;
String mBaseURL = baseURL ?? Http.baseURL;
var uri = Uri.parse("$mBaseURL$endpoint");
if (data == null) {
request = await client.getUrl(uri);
} else {
request = await client.postUrl(uri);
}
_processHeader(
request: request,
headers: headers,
);
if (data != null) {
String payload = json.encode(data);
request.write(payload);
}
final response = await request.close();
if (response.statusCode == 200) {
return json.decode(
await _processResponse(
response: response,
progressListener: downloadProgressListener,
),
);
}
return null;
}
}