upload_cancel_handler.dart
1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import 'package:appframe/data/repositories/message/upload_start_handler.dart';
import 'package:appframe/services/dispatcher.dart';
import 'package:flutter/cupertino.dart';
class UploadCancelHandler extends MessageHandler {
String? _targetUnique;
Map<String, UploadStartHandler>? _activeUploads;
void setTargetUnique(String? targetUnique) {
_targetUnique = targetUnique;
}
void setActiveUploads(Map<String, UploadStartHandler> activeUploads) {
_activeUploads = activeUploads;
}
@override
Future<dynamic> handleMessage(params) async {
try {
final uploads = _activeUploads;
if (uploads == null || uploads.isEmpty) {
return true;
}
if (_targetUnique != null && uploads.containsKey(_targetUnique)) {
uploads[_targetUnique]?.cancel();
} else {
// H5 未传 unique 时,取消所有活跃上传
for (var handler in uploads.values) {
handler.cancel();
}
}
} catch (e) {
debugPrint(e.toString());
} finally {
_targetUnique = null;
_activeUploads = null;
}
return true;
}
}