listAllDevices static method

Future<List<AndroidDeviceInfo>> listAllDevices({
  1. required String cmd,
})

Implementation

static Future<List<AndroidDeviceInfo>> listAllDevices(
    {required String cmd}) async {
  final result = await Process.run(cmd, ['devices', '-l'], runInShell: true);
  if (result.exitCode == Ok) {
    //List of devices attached
    // FFK0217503002178       offline transport_id:5
    // ccad64e                device product:grus model:MI_9_SE device:grus transport_id:1
    final List<AndroidDeviceInfo> r = <AndroidDeviceInfo>[];
    String packageString = result.stdout as String;
    final packagesList = packageString.split('\n');
    for (var line in packagesList) {
      if (!line.contains(':')) {
        continue;
      }
      final rr = line.split(RegExp(r'\s+'));
      if (rr.length < 2) {
        continue;
      }
      AndroidDeviceStatus status;
      String serialno;
      String model = '';
      if (rr[1] == 'device') {
        status = AndroidDeviceStatus.online;
      } else if (rr[1] == 'offline') {
        status = AndroidDeviceStatus.offline;
      } else {
        continue;
      }
      serialno = rr[0];
      rr.forEach((element) {
        if (element.contains('model:')) {
          model = element.split(':')[1];
        }
      });
      r.add(AndroidDeviceInfo(status, serialno, model: model));
    }
    return r;
  } else {
    return [];
  }
}