oce*_*any 5 flutter-dependencies flutter-web
当我在flutter web上使用dart:io库时,调试时出现警告。像那样
[警告]build_web_compilers:entrypoint on 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;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Universal_io包。除了 Android 和 iOS,它还支持 Web。
dependencies:
universal_io: ^1.0.1
Run Code Online (Sandbox Code Playgroud)
执行以下导入而不是dart:io:
import 'package:universal_io/io.dart';
Run Code Online (Sandbox Code Playgroud)
它的工作方式相同。
相关问题:避免在 Flutter Web 插件包之外使用纯 Web 库
小智 6
我自己刚刚遇到了这个问题,看起来 dart:io 库不适用于 Web 应用程序。
来自:https : //api.flutter.dev/flutter/dart-io/dart-io-library.html
重要提示:基于浏览器的应用程序不能使用这个库。只有服务器、命令行脚本和 Flutter 移动应用程序可以导入和使用 dart:io。
| 归档时间: |
|
| 查看次数: |
5841 次 |
| 最近记录: |