


# unbind method








[InterfaceRequest](../../package-fidl_fidl/InterfaceRequest-class.md)&lt;T> unbind
()





<p>Unbinds <a href="../../package-fidl_fidl/AsyncBinding/impl.md">impl</a> and returns the unbound channel as an interface request.</p>
<p>Stops listening for messages on the bound channel, wraps the channel in an
interface request of the appropriate type, and returns that interface
request.</p>
<p>The object must have previously been bound (e.g., using <a href="../../package-fidl_fidl/AsyncBinding/bind.md">bind</a>).</p>



## Implementation

```dart
InterfaceRequest<T> unbind() {
  if (!isBound) {
    throw FidlStateException("AsyncBinding<${$interfaceName}> isn't bound");
  }
  final InterfaceRequest<T> result = InterfaceRequest<T>(_reader.unbind());
  _impl = null;

  state = InterfaceState.closed;

  return result;
}
```







