loadCoreJs method
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);
}