generateOneLine method
Implementation
String generateOneLine({required String path}) {
bool namedWithParent = config.namedWithParent ?? true; // 默认是 true. 当 = false 时, 输出 static const String assets/全部路径 = "assets/xxx"
bool leadingWithPackageName = config.leadingWithPackageName ?? false;
String regexPattern = config.filenameSplitPattern ?? "[-_]";
// var
int startIndex = namedWithParent ? path.split("/").length - 2 : 1;
String varString = generateVarName(path: path, startIndex: startIndex, regexPattern: regexPattern);
// 检查变量是否已经存在
int sameNameCount = allVarStringList
.where((string) {
if (string.startsWith(varString)) {
String s = string.replaceAll(varString, "");
try {
int.parse(s);
return true;
} catch (e) {
//
}
}
return false;
})
.toList()
.length;
while (allVarStringList.contains(varString)) {
if (startIndex > 1) {
startIndex--;
varString = generateVarName(path: path, startIndex: startIndex, regexPattern: regexPattern);
} else {
varString += "${sameNameCount + 1}";
}
}
// value
String valueString = "${leadingWithPackageName ? "package/$packageName/" : ""}$path";
if (varString.isEmpty || valueString.isEmpty) {
return '';
}
String result = "$staticConstString $varString = '$valueString';";
allVarStringList.add(varString);
return result;
}