1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import 'dart:typed_data';
- import 'package:vid/us/vid_us_data_http_reader.dart';
- import '../vid_data.dart';
- import 'reader.dart';
- class AsyncShellVidImageData extends AsyncVidImageDataBase {
- static final _readerMap = <String, AsyncShellVidDataReader>{};
- AsyncShellVidImageData(String url, {DownloadCallback? downloadCallback})
- : super(url, downloadCallback: downloadCallback);
- @override
- AsyncShellVidDataReader createReader(
- String url, {
- DownloadCallback? downloadCallback,
- }) {
- final reader = AsyncShellVidDataReader(
- url,
- downloadCallback: downloadCallback,
- );
- _readerMap[reader.id] = reader;
- return reader;
- }
- @override
- void close() {
- super.close();
- final readerId = getReader<AsyncShellVidDataReader>().id;
- _readerMap.remove(readerId);
- }
- static void receiveChunk(String id, Uint8List chunk) {
- if (_readerMap.containsKey(id)) {
- final reader = _readerMap[id]!;
- reader.receiveChunk(chunk);
- if (reader.downloadedSize >= reader.totalSize) {
- // 下载完成即删除Map缓存
- _readerMap.remove(id);
- }
- }
- }
- }
|