applyToDom method

void applyToDom(
  1. SeoData data,
  2. SFWFConfig config
)

Implementation

void applyToDom(SeoData data, SFWFConfig config) {
  if (!kIsWeb) return;

  try {
    final title = data.title?.isNotEmpty == true
        ? '${data.title}${config.seoDefaults.titleSuffix}'
        : config.appName;

    web.document.title = title;

    _setMeta('description',
        data.description ?? config.seoDefaults.defaultDescription);

    _setMeta('og:title', data.title ?? config.appName);
    _setMeta('og:description',
        data.description ?? config.seoDefaults.defaultDescription);
    _setMeta('og:image', data.image ?? config.seoDefaults.defaultImage);
    _setMeta('og:url',
        config.baseUrl + web.window.location.pathname);
    _setMeta('og:type', data.ogType ?? 'website');
    _setMeta('og:site_name', config.appName);
    _setMeta('og:locale',
        data.locale ?? config.supportedLocales.first.toLanguageTag());

    _setMeta(
        'twitter:card', data.twitterCard ?? 'summary_large_image');
    _setMeta('twitter:title', data.title ?? config.appName);
    _setMeta('twitter:description',
        data.description ?? config.seoDefaults.defaultDescription);
    _setMeta('twitter:image',
        data.image ?? config.seoDefaults.defaultImage);
    _setMeta('twitter:site', config.seoDefaults.twitterHandle);

    if (data.keywords != null) {
      _setMeta('keywords', data.keywords!);
    }
    if (data.themeColor != null) {
      _setMeta('theme-color', data.themeColor!);
      _setMeta('msapplication-TileColor', data.themeColor!);
    }
    if (data.canonicalUrl != null) {
      _setLink('canonical', data.canonicalUrl!);
    }

    if (data.structuredData != null) {
      _injectJsonLd(data.structuredData!);
    }

    if (data.noIndex == true) {
      _setMeta('robots', 'noindex, nofollow');
    }
  } catch (_) {}
}