injectCssAndJSLibraries method

Future<void> injectCssAndJSLibraries()

注入CSS和JavaScript库到DOM中

动态加载Toastify.js库的CSS和JS文件,确保Toast功能正常工作

Implementation

Future<void> injectCssAndJSLibraries() async {
  final List<Future<void>> loading = <Future<void>>[];
  final List<web.HTMLElement> tags = <web.HTMLElement>[];

  // 获取CSS文件URL并创建link元素
  final cssUrl = ui.assetManager.getAssetUrl(
    'packages/dencend_toast/assets/toastify.css',
  );
  final web.HTMLLinkElement css = web.HTMLLinkElement()
    ..id = 'toast-css'
    ..setAttribute("rel", "stylesheet")
    ..href = cssUrl;
  tags.add(css);

  // 获取JS文件URL并创建script元素
  final jsUrl = ui.assetManager.getAssetUrl(
    'packages/dencend_toast/assets/toastify.js',
  );
  final web.HTMLScriptElement script = web.HTMLScriptElement()
    ..async = true
    ..src = jsUrl;
  loading.add(script.onLoad.first);
  tags.add(script);

  // 将所有元素添加到文档头部
  for (final web.HTMLElement tag in tags) {
    web.document.querySelector('head')!.append(tag);
  }

  // 等待所有JS资源加载完成
  await Future.wait(loading);
}