ImageSource.auto constructor

ImageSource.auto(
  1. 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());
}