lib/aliplayer_widget_global_setting.dart (41 lines of code) (raw):
// Copyright © 2025 Alibaba Cloud. All rights reserved.
//
// Author: keria
// Date: 2025/2/14
// Brief: AliPlayer Widget 全局配置
part of 'aliplayer_widget_lib.dart';
/// AliPlayer Widget Global Setting
///
/// AliPlayer Widget 全局配置
class AliPlayerWidgetGlobalSetting {
/// Flutter Widget version
///
/// Flutter Widget 版本号
static const String kWidgetVersion = '7.2.0';
/// extra data for global settings
///
/// 业务场景信息的 JSON 字符串
static const String _extraData =
"{\"scene\":\"flutter-widget\", \"version\":\"$kWidgetVersion\"}";
/// cache directory name
///
/// 缓存相对目录
static const String _cacheDirectoryName = 'aliplayer_widget';
/// whether to enable local cache
///
/// 是否开启本地缓存
static const _enableLocalCache = true;
/// local cache max buffer memory
///
/// 5.4.7.1及以后版本已废弃,暂无作用。
static const int _localCacheMaxBufferMemoryKB = 10 * 1024;
/// local cache expire time
///
/// 5.4.7.1及以后版本已废弃,暂无作用。
static const int _localCacheExpireTime = 30 * 24 * 60;
/// local cache max capacity
///
/// 最大缓存容量。单位:兆,默认值20GB
/// 在清理时,如果缓存总容量超过此大小,则会以cacheItem为粒度,按缓存的最后时间排序,一个一个的删除最旧的缓存文件,直到小于等于最大缓存容量。
static const int _localCacheMaxCapacityMb = 20 * 1024;
/// local cache free storage
///
/// 磁盘最小空余容量。单位:兆,默认值0
/// 在清理时,同最大缓存容量,如果当前磁盘容量小于该值,也会按规则一个一个的删除缓存文件,直到freeStorage大于等于该值或者所有缓存都被清理掉。
static const int _localCacheFreeStorageMb = 0;
// 私有构造函数,防止实例化
AliPlayerWidgetGlobalSetting._();
/// 标志变量,用于确保全局配置只执行一次
static bool _isInitialized = false;
/// Setup global configuration.
/// Internally set, no need to call externally again.
///
/// 设置全局配置,内部已设置,无需外部再调用
static Future<void> setupConfig() async {
if (_isInitialized) {
return; // 如果已经初始化过,直接返回
}
// 标记为已初始化
_isInitialized = true;
// 设置业务标识
_setupExtraData();
}
/// Setup extra data for global settings.
///
/// 配置全局缓存设置的额外数据
static void _setupExtraData() {
// 设置业务标识
FlutterAliPlayerGlobalSettings.setOption(
AliPlayerGlobalSettings.SET_EXTRA_DATA,
_extraData,
);
}
/// Setup media loader config.
///
/// 设置播放器预加载配置
static void setupMediaLoaderConfig(String fullPath) {
String localCacheDir = "$fullPath/$_cacheDirectoryName";
// FIXME keria: Why do int values need to be passed as strings??? Niubility..
// 设置本地缓存配置
FlutterAliplayer.enableLocalCache(
_enableLocalCache,
"$_localCacheMaxBufferMemoryKB",
localCacheDir,
DocTypeForIOS.documents,
);
// FIXME keria: Why do int values need to be passed as strings??? Niubility..
// 设置缓存文件清理配置
FlutterAliplayer.setCacheFileClearConfig(
"$_localCacheExpireTime",
"$_localCacheMaxCapacityMb",
"$_localCacheFreeStorageMb",
);
}
}