createMediaWidget static method

Widget? createMediaWidget({
  1. Key? key,
  2. required Media media,
  3. NclDocument? document,
})

Implementation

static Widget? createMediaWidget({
  Key? key,
  required Media media,
  NclDocument? document,
}) {
  final mimeType = media.mimeType;
  var src = media.uri.isNotEmpty ? media.uri : (media.src ?? '');
  if (src.startsWith('sbtvd://')) {
    return null;
  }
  if (src.endsWith('.ncl') ||
      mimeType == 'application/x-ncl-NCL' ||
      mimeType == 'application/x-ncl-ncl') {
    return NclWidget(
      key: key,
      src: src,
      media: media,
      document: document,
      gingacc: document?.gingacc,
    );
  }
  if (mimeType.startsWith('video/') ||
      mimeType.startsWith('audio/') ||
      mimeType.contains('video') ||
      mimeType.contains('audio')) {
    return AVWidget(
      key: key,
      src: src,
      media: media,
      document: document,
    );
  }
  switch (mimeType) {
    case 'application/x-ncl-NCLua':
    case 'application/x-ginga-NCLua':
      return LuaWidget(
        key: key,
        src: src,
        media: media,
        document: document,
      );
    case 'text/plain':
      return TextWidget(
        key: key,
        src: src,
        media: media,
        document: document,
      );
    case 'text/html':
      return HtmlWidget(
        key: key,
        src: src,
        media: media,
        document: document,
      );
    case 'image/png':
    case 'image/jpeg':
    case 'image/gif':
    case 'image/webp':
    case 'image/bmp':
    case 'image/heic':
    case 'application/x-ginga-time':
    case 'application/x-ncl-time':
      return ImageWidget(
        key: key,
        src: src,
        media: media,
        document: document,
      );
    default:
      return null;
  }
}