import 'dart:io'; import 'dart:typed_data'; import 'package:f_cache/manager.dart'; import 'package:http/http.dart' as http; import '../utils.dart'; import '../pb.dart' as pb; class MNetImage{ String url = ''; Uint8List md5 = Uint8List(0); Uint8List? data; int? timestamp; var ext = ''; Uint8List nonce = Uint8List(0); String? get md5Hex { if(md5.isEmpty){ return null; }else{ return md5.toHexString(); } } Future readerBuilder()async{ final url = Uri.parse(this.url); var request = http.Request('GET', url); var response = await request.send(); if (response.statusCode != 200) { throw HttpException('state: ${response.statusCode}', uri: url); } final length = response.contentLength ?? 0; return Reader(response.stream, length); } Future preload()async{ await CacheManager().getCached(id: md5Hex ?? '', readerBuilder: readerBuilder); } } extension PbNetImageExtension on pb.NetImage{ MNetImage toModel(){ return MNetImage() ..url = url ..md5 = Uint8List.fromList(md5); } }