generateOneLine method

String generateOneLine({
  1. required String path,
})

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;
}