getAvailableAvds function

Future<List<AvdInfo>> getAvailableAvds()

Implementation

Future<List<AvdInfo>> getAvailableAvds() async {
  final avdHome = Platform.environment['ANDROID_AVD_HOME'] ??
      p.join(Platform.environment['HOME']!, '.android', 'avd');

  final avdDirectory = Directory(avdHome);
  if (!await avdDirectory.exists()) {
    print('❌ AVD directory does not exist at $avdHome');
    return [];
  }

  final avdDirs = await avdDirectory
      .list()
      .where((entity) => entity is Directory && entity.path.endsWith('.avd'))
      .toList();

  List<AvdInfo> avds = [];
  for (final entity in avdDirs) {
    final dir = entity as Directory;
    final size = await _getDirectorySize(dir);
    final name = p.basenameWithoutExtension(dir.path);
    avds.add(AvdInfo(name: name, sizeBytes: size));
  }

  return avds;
}