flutter devices/doctor report Android (and iOS) version (#6545)

* refactor device descriptions method - easier to add columns
* show device SDK version
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index 003a65c..2fcdb31 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -89,7 +89,7 @@
 
     List<IOSDevice> devices = <IOSDevice>[];
     for (String id in _getAttachedDeviceIDs(mockIOS)) {
-      String name = _getDeviceName(id, mockIOS);
+      String name = IOSDevice._getDeviceInfo(id, 'DeviceName', mockIOS);
       devices.add(new IOSDevice(id, name: name));
     }
     return devices;
@@ -105,11 +105,11 @@
     }
   }
 
-  static String _getDeviceName(String deviceID, [IOSDevice mockIOS]) {
+  static String _getDeviceInfo(String deviceID, String infoKey, [IOSDevice mockIOS]) {
     String informerPath = (mockIOS != null)
         ? mockIOS.informerPath
         : _checkForCommand('ideviceinfo');
-    return runSync(<String>[informerPath, '-k', 'DeviceName', '-u', deviceID]).trim();
+    return runSync(<String>[informerPath, '-k', infoKey, '-u', deviceID]).trim();
   }
 
   static final Map<String, String> _commandMap = <String, String>{};
@@ -370,6 +370,13 @@
   TargetPlatform get platform => TargetPlatform.ios;
 
   @override
+  String get sdkNameAndVersion => 'iOS $_sdkVersion ($_buildVersion)';
+
+  String get _sdkVersion => _getDeviceInfo(id, 'ProductVersion');
+
+  String get _buildVersion => _getDeviceInfo(id, 'BuildVersion');
+
+  @override
   DeviceLogReader get logReader {
     if (_logReader == null)
       _logReader = new _IOSDeviceLogReader(this);