Media.asset constructor

Media.asset(
  1. String asset, {
  2. dynamic startTime = Duration.zero,
})

Makes Media object from assets.

WARNING

This method only works for Flutter. Might result in an exception on Dart CLI.

Implementation

factory Media.asset(
  String asset, {
  startTime = Duration.zero,
}) {
  String? assetPath;
  if (Platform.isWindows || Platform.isLinux) {
    assetPath = path.join(
      path.dirname(Platform.resolvedExecutable),
      'data',
      'flutter_assets',
      asset,
    );
  } else if (Platform.isMacOS) {
    assetPath = path.join(
      path.dirname(Platform.resolvedExecutable),
      '..',
      'Frameworks',
      'App.framework',
      'Resources',
      'flutter_assets',
      asset,
    );
  } else if (Platform.isIOS) {
    assetPath = path.join(
      path.dirname(Platform.resolvedExecutable),
      'Frameworks',
      'App.framework',
      'flutter_assets',
      asset,
    );
  }
  if (assetPath == null) {
    // TODO: Add Android support.
    throw UnimplementedError('The platform is not supported');
  }
  final url = Uri.file(assetPath, windows: Platform.isWindows);
  return Media._(
    mediaType: MediaType.asset,
    resource: url.toString(),
    metas: {},
    startTime: startTime,
  );
}