ImageSource.auto constructor
ImageSource.auto(
- dynamic data
自动识别图片资源
Implementation
factory ImageSource.auto(dynamic data) {
if (data == null) {
return ImageSource.network('');
}
// 识别Base64
if (data is String && _isBase64(data)) {
final format = ImageTypeDetector.detectFromBase64(data);
return ImageSource.base64(data, format: format);
}
// 识别网络图片
if (data is String && _isNetworkUrl(data)) {
final format = ImageTypeDetector.detectFromUrl(data);
return ImageSource.network(data, format: format);
}
// 识别Asset(简单判断:非路径、非URL的字符串)
if (data is String && !_isFilePath(data) && !_isNetworkUrl(data)) {
final format = ImageTypeDetector.detectFromFileName(data);
return ImageSource.asset(data, format: format);
}
// 识别文件路径
if (data is String && _isFilePath(data)) {
final format = ImageTypeDetector.detectFromFileName(data);
return ImageSource.file(data, format: format);
}
// 识别内存数据
if (data is Uint8List) {
final format = ImageTypeDetector.detectFromBytes(data);
return ImageSource.memory(data, format: format);
}
return ImageSource.network(data.toString());
}