loadCoreJs method

Future loadCoreJs({
  1. String? package,
  2. Map<String, String>? jsPlugins,
  3. List<String>? baseJsSources,
})

Implementation

Future<dynamic> loadCoreJs({String? package, Map<String, String>? jsPlugins, List<String>? baseJsSources}) async {
  var map = <dynamic, dynamic>{};
  if (!loadBaseJsConstant[0]) {
    var baseJsSource = '';
    /*
     * 读取基础配置内容
     */
    var coreConfigJson = await rootBundle.loadString('packages/fair/assets/fair_home.json');
    var coreConfig = jsonDecode(coreConfigJson)['coreJs'];
    Iterable<String> coreKeys = coreConfig.keys;
    for (var key in coreKeys) {
      baseJsSource += '${await rootBundle.loadString(coreConfig[key])} ;';
    }
    if (baseJsSources != null) {
      baseJsSources.forEach((element) {
        baseJsSource += '$element ;';
      });
    }
    /*
     * 读取用户配置的内容
     * 例如用户配置的插件,或者用户的其它拓展等,该配置json名称固定
     */
    var pluginJsSource = ' ';
    //加载用户自定义的plugin
    var plugins = <String, dynamic>{};
    try {
      var customConfigJson = await rootBundle.loadString('${package != null ? 'packages/$package/' : ''}assets/fair_basic_config.json');
      var customConfig = jsonDecode(customConfigJson);
      //加载用户自定义的plugin
      if (customConfig['plugin'] != null) {
        plugins.addAll(customConfig['plugin']);
      }
    } catch (e) {
      print(e);
    }

    if (jsPlugins != null) {
      plugins.addAll(jsPlugins);
    }
    try {
      var keys = plugins.keys;
      for (var k in keys) {
        pluginJsSource = pluginJsSource + ' ; ' + await rootBundle.loadString(plugins[k]);
      }
    } catch (e) {
      print(e);
    }
    loadBaseJsConstant[0] = true;
    map[FairMessage.PATH] = baseJsSource + ' ; ' + pluginJsSource;
    map[FairMessage.PAGE_NAME] = 'loadCoreJs';
  }

  if (map.isEmpty) {
    return Future.value(null);
  }
  return _channel!.loadJS(jsonEncode(map), null);
}