


# InterfaceState enum







<p>The different states that an <a href="../package-fidl_fidl/AsyncBinding-class.md">AsyncBinding</a> or <a href="../package-fidl_fidl/AsyncProxy-class.md">AsyncProxy</a> can be in.</p>



**Inheritance**

- Object
- Enum
- InterfaceState






## Constructors

[InterfaceState](../package-fidl_fidl/InterfaceState/InterfaceState.md) ()

  _const_ 


## Values

##### [unbound](../package-fidl_fidl/InterfaceState.md) const [InterfaceState](../package-fidl_fidl/InterfaceState.md)



<p>The binding or proxy has not yet been bound.</p>  




##### [bound](../package-fidl_fidl/InterfaceState.md) const [InterfaceState](../package-fidl_fidl/InterfaceState.md)



<p>The binding or proxy has been bound to a channel.</p>  




##### [closed](../package-fidl_fidl/InterfaceState.md) const [InterfaceState](../package-fidl_fidl/InterfaceState.md)



<p>The binding or proxy has been closed.</p>  





## Properties

##### [hashCode](../package-fidl_fidl/InterfaceState/hashCode.md) &#8594; int



The hash code for this object.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_



##### [index](../package-fidl_fidl/InterfaceState/index.md) &#8594; int



A numeric identifier for the enumerated value.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_



##### [runtimeType](../package-fidl_fidl/InterfaceState/runtimeType.md) &#8594; Type



A representation of the runtime type of the object.  
_<span class="feature">read-only</span><span class="feature">inherited</span>_





## Methods

##### [noSuchMethod](../package-fidl_fidl/InterfaceState/noSuchMethod.md)(Invocation invocation) dynamic



Invoked when a non-existent method or property is accessed.  
_<span class="feature">inherited</span>_



##### [toString](../package-fidl_fidl/InterfaceState/toString.md)() String



A string representation of this object.  
_<span class="feature">inherited</span>_





## Operators

##### [operator ==](../package-fidl_fidl/InterfaceState/operator_equals.md)(Object other) bool



The equality operator.  
_<span class="feature">inherited</span>_










## Constants

##### [values](../package-fidl_fidl/InterfaceState/values-constant.md) const List&lt;[InterfaceState](../package-fidl_fidl/InterfaceState.md)>



A constant List of the values in this enum, in order of their declaration.  









