transformToPlatformConstructorArgs method
List
transformToPlatformConstructorArgs(
- List args,
- List<
int> indices, - Map<
String, dynamic> typeMap, - Map<
String, dynamic> enumMap, - Map<
String, dynamic> classMap, - String platformVar,
inherited
实例化参数处理 将 pack 过后的 enum / class 转成 android / ios 平台侧的 enum / class
Implementation
List<dynamic> transformToPlatformConstructorArgs(
List<dynamic> args,
List<int> indices,
Map<String, dynamic> typeMap,
Map<String, dynamic> enumMap,
Map<String, dynamic> classMap,
String platformVar,
) {
if (indices.length == 0) {
return [];
}
List<dynamic> params = [];
for (int i = 0; i < indices.length; i++) {
int argsIdx = indices[i];
String type = typeMap['paramType-$argsIdx'];
// collectionType genericKind typeName
String collectionType = type.split(' ')[0];
String genericKind = type.split(' ')[1];
String typeName = type.split(' ')[2];
dynamic arg = args[argsIdx];
if (arg == null) {
params.add(null);
continue;
}
// 如果类别是 enum / class 且不是以平台侧 enum / class 传入的话
// 需要转成 平台侧的 的 enum / class 传递给构造函数
if (collectionType == '' &&
genericKind == 'enum' &&
!typeName.startsWith(platformVar)) {
params.add(enumMap[typeName](arg));
} else if (collectionType == '' &&
genericKind == 'class' &&
!typeName.startsWith(platformVar)) {
params.add(classMap[typeName](arg));
} else if (collectionType == 'List' &&
genericKind == 'class' &&
!typeName.startsWith(platformVar)) {
List<dynamic> l = [];
for (int j = 0; j < arg.length; j++) {
l.add(classMap[typeName](arg[j]));
}
params.add(l);
} else if (collectionType == 'List' &&
genericKind == 'enum' &&
!typeName.startsWith(platformVar)) {
List<dynamic> l = [];
for (int j = 0; j < arg.length; j++) {
l.add(enumMap[typeName](arg[j]));
}
params.add(l);
} else {
params.add(arg);
}
}
return params;
}