初始化

This commit is contained in:
谢宇宁
2026-09-15 15:44:13 +07:00
commit a23ba685e9
1065 changed files with 101122 additions and 0 deletions
+56
View File
@@ -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);
}