textToFunctionIsar function
String
textToFunctionIsar({
- required String key,
- required dynamic value,
- required String returnType,
- required String className,
- bool isClass = false,
- bool isList = false,
- bool isUseClassName = false,
- String? comment,
- required void callback(
- String text
- required void paramFunction(
- String text
- required void paramJson(
- String text
- required void operatorData(
- String text
Implementation
String textToFunctionIsar({
required String key,
required value,
required String returnType,
required String className,
bool isClass = false,
bool isList = false,
bool isUseClassName = false,
String? comment,
required void Function(String text) callback,
required void Function(String text) paramFunction,
required void Function(String text) paramJson,
required void Function(String text) operatorData,
}) {
comment ??= "";
if (value is String) {
value = json.encode(value);
}
String nameClass = key.camelCaseClass();
if (isUseClassName) {
nameClass = "${className}${key.camelCaseClass()}";
}
String nameMethod = key
.replaceAll(RegExp(r"^(@|[0-9]+)", caseSensitive: false), "special_")
.replaceAll(RegExp(r"([\-]+)", caseSensitive: false), "_")
.replaceAll(RegExp(r"^(_)", caseSensitive: false), "special_");
if (RegExp(r"^(do|is|in)$", caseSensitive: false).hasMatch(nameMethod)) {
nameMethod += "_";
}
// operatorData.call("""
// if (key == "${key}") {
// ${nameMethod} = value;
// }
// """);
if (isClass) {
if (isList) {
operatorData.call("""
if (key == "${key}") {
if (value is List<${nameClass}>) {
${nameMethod} = value;
} else {
${nameMethod} = (value as List).map((state_data_procces) {
${nameClass} state_value_procces = ${nameClass}();
(state_data_procces as Map).forEach((key, value) {
state_value_procces[key] = value;
});
return state_value_procces;
}).toList().cast<${nameClass}>();
}
}
""");
paramFunction.call("""
List<${nameClass}?>? ${nameMethod},
""");
// paramJson.call("""
// "${key}": (${nameMethod} != null)?${nameMethod}.map((res) => res.toJson()).toList().cast<Map>():null,
// """);
paramJson.call("""
"${key}": ${nameMethod}.map((res) => res.toJson()).toList().cast<Map>(),
""");
callback.call("""
try {
if (rawData["${key}"] is List == false){
${nameMethod} = null;
}
${nameMethod} = (rawData["${key}"] as List).map((e) => ${nameClass}(e as $returnType)).toList().cast<${nameClass}>();
} catch (e) {
${nameMethod} = null;
}
""");
return """
${comment}
List<${nameClass}> ${nameMethod} = [];
""";
}
operatorData.call("""
if (key == "${key}") {
if (value is ${nameClass}) {
${nameMethod} = value;
} else {
${nameClass} state_value_procces = ${nameClass}();
(value as Map).forEach((key, value) {
state_value_procces[key] = value;
});
${nameMethod} = state_value_procces;
}
}
""");
paramFunction.call("""
${nameClass}? ${nameMethod},
""");
// paramJson.call("""
// "${key}": (${nameMethod} != null)?${nameMethod}.toJson(): null,
// """);
paramJson.call("""
"${key}": ${nameMethod}.toJson(),
""");
callback.call("""
try {
if (rawData["${key}"] is ${returnType} == false){
${nameMethod} = ${nameClass}({});
}
${nameMethod} = ${nameClass}(rawData["${key}"] as $returnType);
} catch (e) {
${nameMethod} = ${nameClass}({});
}
""");
return """
${comment}
${nameClass} ${nameMethod} = ${nameClass}();
""";
}
operatorData.call("""
if (key == "${key}") {
${nameMethod} = value;
}
""");
if (isList) {
paramFunction.call("""
List<${returnType}?>? ${nameMethod},
""");
paramJson.call("""
"${key}": ${nameMethod},
""");
callback.call("""
try {
if (rawData["${key}"] is List == false){
${nameMethod} = null;
}
${nameMethod} = (rawData["${key}"] as List).cast<${returnType}>();
} catch (e) {
${nameMethod} = null;
}
""");
return """
${comment}
List<${returnType}> ${nameMethod} = ${value};
""";
}
paramFunction.call("""
$returnType? ${nameMethod},
""");
paramJson.call("""
"${key}": ${nameMethod},
""");
callback.call("""
try {
if (rawData["${key}"] is ${returnType} == false){
${nameMethod} = null;
}
${nameMethod} = rawData["${key}"] as ${returnType};
} catch (e) {
${nameMethod} = null;
}
""");
return """
${comment}
$returnType ${nameMethod} = ${value};
""";
}