初始化
This commit is contained in:
+56
@@ -0,0 +1,56 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
import '../../hj_utils/text_util.dart';
|
||||
|
||||
/// 取消token管理
|
||||
class CancelTokenManager {
|
||||
static CancelTokenManager? _instance;
|
||||
//取消token单例
|
||||
factory CancelTokenManager() {
|
||||
_instance ??= CancelTokenManager._();
|
||||
return _instance!;
|
||||
}
|
||||
CancelTokenManager._();
|
||||
|
||||
/// 取消token列表
|
||||
final List<CancelTokenWarp> _cancelTokens = [];
|
||||
|
||||
/// 创建cancleToken如果需要
|
||||
/// [url]
|
||||
CancelToken createToken(String url, [String uniquekey='']) {
|
||||
var ctw = CancelTokenWarp(url, CancelToken())..uniqueKey = uniquekey;
|
||||
_cancelTokens.add(ctw);
|
||||
return ctw.token;
|
||||
}
|
||||
|
||||
/// 获取cancleToken如果需要
|
||||
/// [url]
|
||||
CancelToken? getToken(String url, [String uniquekey = '']) {
|
||||
// indexWhere 找不到返回 -1,避免 firstWhere 无 orElse 时抛 StateError
|
||||
final idx = _cancelTokens.indexWhere((it) =>
|
||||
TextUtil.isEmpty(uniquekey) ? it.url == url : (it.url == url && it.uniqueKey == uniquekey));
|
||||
return idx < 0 ? null : _cancelTokens[idx].token;
|
||||
}
|
||||
|
||||
List<CancelTokenWarp> get peekList => _cancelTokens;
|
||||
|
||||
/// 删除
|
||||
/// [url]
|
||||
CancelToken? remove(String url, [String uniquekey = '']) {
|
||||
// indexWhere 找不到返回 -1,避免 firstWhere 无 orElse 时抛 StateError
|
||||
final idx = _cancelTokens.indexWhere((it) =>
|
||||
TextUtil.isEmpty(uniquekey) ? it.url == url : (it.url == url && it.uniqueKey == uniquekey));
|
||||
if (idx < 0) return null;
|
||||
return _cancelTokens.removeAt(idx).token;
|
||||
}
|
||||
|
||||
/// 正在请求的长度
|
||||
int get length => _cancelTokens.length;
|
||||
}
|
||||
|
||||
class CancelTokenWarp {
|
||||
String url;
|
||||
CancelToken token;
|
||||
String? uniqueKey;
|
||||
CancelTokenWarp(this.url, this.token);
|
||||
}
|
||||
Reference in New Issue
Block a user