prepareEnv method

  1. @override
Future<void> prepareEnv()
override

Implementation

@override
Future<void> prepareEnv() async {
  var buildFile = File("${Directory.current.path}/android/app/build.gradle");

  if (!buildFile.existsSync()) {
    throw Exception(
        "Error on Configure android, missing file: /android/app/build.gradle");
  }

  var lines = await buildFile.linesIndexed();
  MapEntry minSdkVersion = const MapEntry(-1, "");
  MapEntry targetSdkVersion = const MapEntry(-1, "");
  MapEntry compileSdkVersion = const MapEntry(-1, "");

  lines.forEach((key, value) {
    if (value.contains("minSdkVersion")) {
      minSdkVersion = MapEntry(key, value);
    }

    if (value.contains("targetSdkVersion")) {
      targetSdkVersion = MapEntry(key, value);
    }
    if (value.contains("compileSdkVersion")) {
      compileSdkVersion = MapEntry(key, value);
    }
  });

  if (minSdkVersion.key == -1 ||
      targetSdkVersion.key == -1 ||
      compileSdkVersion.key == -1) {
    throw Exception(
        "Error on Configure android, invalid content of  /android/app/build.gradle missing one of the following: [minSdkVersion, targetSdkVersion, compileSdkVersion]");
  }

  lines[minSdkVersion.key] = "        minSdkVersion 22";
  lines[targetSdkVersion.key] = "        targetSdkVersion 30";
  lines[compileSdkVersion.key] = "    compileSdkVersion 33";

  buildFile.writeAsStringSync(lines.values.join("\n"));
}