Add DevicePortForwarder with adb fix
diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart
index 8af09f4..2783296 100644
--- a/packages/flutter_tools/lib/src/ios/devices.dart
+++ b/packages/flutter_tools/lib/src/ios/devices.dart
@@ -10,6 +10,7 @@
 
 import '../application_package.dart';
 import '../base/common.dart';
+import '../base/os.dart';
 import '../base/process.dart';
 import '../build_configuration.dart';
 import '../device.dart';
@@ -65,6 +66,8 @@
 
   _IOSDeviceLogReader _logReader;
 
+  _IOSDevicePortForwarder _portForwarder;
+
   bool get isLocalEmulator => false;
 
   bool get supportsStartPaused => false;
@@ -230,6 +233,13 @@
     return _logReader;
   }
 
+  DevicePortForwarder get portForwarder {
+    if (_portForwarder == null)
+      _portForwarder = new _IOSDevicePortForwarder(this);
+
+    return _portForwarder;
+  }
+
   void clearLogs() {
   }
 }
@@ -310,3 +320,28 @@
     return other.name == name;
   }
 }
+
+class _IOSDevicePortForwarder extends DevicePortForwarder {
+  _IOSDevicePortForwarder(this.device);
+
+  final IOSDevice device;
+
+  List<ForwardedPort> get forwardedPorts {
+    final List<ForwardedPort> ports = <ForwardedPort>[];
+    // TODO(chinmaygarde): Implement.
+    return ports;
+  }
+
+  Future<int> forward(int devicePort, {int hostPort: null}) async {
+    if ((hostPort == null) || (hostPort == 0)) {
+      // Auto select host port.
+      hostPort = await findAvailablePort();
+    }
+    // TODO(chinmaygarde): Implement.
+    return hostPort;
+  }
+
+  Future unforward(ForwardedPort forwardedPort) async {
+    // TODO(chinmaygarde): Implement.
+  }
+}