resolve method

MiniProgramScreenRenderer resolve(
  1. MiniProgramManifest manifest
)

Resolves a renderer for manifest.

Implementation

MiniProgramScreenRenderer resolve(MiniProgramManifest manifest) {
  final format = MiniProgramScreenFormats.normalize(manifest.screenFormat);
  final renderer = _renderers[format];
  if (renderer == null) {
    throw MiniProgramRenderException(
      message: 'Unsupported mini-program screen format "$format".',
      details: <String, dynamic>{'unsupportedScreenFormat': format},
    );
  }

  final supportedVersions = renderer.supportedSchemaVersions;
  if (supportedVersions.isNotEmpty) {
    final version = manifest.screenSchemaVersion;
    if (version == null || !supportedVersions.contains(version)) {
      throw MiniProgramRenderException(
        message:
            'Unsupported mini-program screen schema version "$version" for format "$format".',
        details: <String, dynamic>{
          'unsupportedScreenSchemaVersion': version,
          'supportedScreenSchemaVersions': supportedVersions.toList()..sort(),
        },
      );
    }
  }

  return renderer;
}