flutter CachedNetworkImage 加载https失败
flutter CachedNetworkImage 加载https失败
1.使用dio跳过证书验证
//证书验证
(_dio!.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client){
client.badCertificateCallback=(cert, host, port){
return true;
};
return client;
};
2.在请求时设置状态responseType,及返回的数据类型
Response<List<int>> response =_dio!.get<List<int>>(path, options: Options(responseType: ResponseType.bytes))
3.
import 'dart:async';
import 'dart:typed_data';
import 'package:cockpitapp/service/service-base.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:http/http.dart' as http;
/// 缓存管理
class EsoImageCacheManager extends CacheManager {
static const key = 'libEsoCachedImageData';
static EsoImageCacheManager? _instance;
factory EsoImageCacheManager() {
_instance ??= EsoImageCacheManager._();
return _instance!;
}
EsoImageCacheManager._() : super(Config(key, fileService: EsoHttpFileService()));
}
class EsoHttpFileService extends FileService {
@override
Future<FileServiceResponse> get(String? url,
{Map<String, String>? headers = const {}}) async {
Uint8List result = await HttpServiceBase.getHttpServiceBase().getVideoString(url!,type: 'image');
final http.StreamedResponse _response = http.StreamedResponse(
Stream.value(response.data), response.statusCode,
);
return HttpGetResponse(_response);
}
}
4.设置cacheManager
.CachedNetworkImage(//图片
imageUrl: url,
width: width,
height: height,
fit: fit,
cacheManager: EsoImageCacheManager()
)
更多推荐
所有评论(0)