capabilityChanged method

Stream<CapabilityInfo> capabilityChanged({
  1. String? capabilityName,
  2. Uri? capabilityPath,
  3. UriFilterType filterType = UriFilterType.literal,
})

Listen to a capability changed

You can listen to a specific capability via name/path or a group of capability via path

This Stream emit a CapabilityInfo each time the capability's changed.

Implementation

Stream<CapabilityInfo> capabilityChanged(
    {String? capabilityName,
    Uri? capabilityPath,
    UriFilterType filterType = UriFilterType.literal}) async* {
  if (capabilityName == null && capabilityPath == null) {
    throw "Name or uri must be specified";
  }
  await removeCapabilityListener(
      capabilityName: capabilityName, capabilityUri: capabilityPath);
  await channel.invokeMethod(
      "addCapabilityListener",
      capabilityName != null
          ? {
              "name": capabilityName,
            }
          : {
              "path": capabilityPath.toString(),
              "filterType": filterType.index
            });

  String key = capabilityName ?? capabilityPath.toString();
  Map<String, StreamController<CapabilityInfo>>
      _capabilityInfoStreamControllers =
      _wearOSObserver.streamControllers[ObservableType.capability]
          as Map<String, StreamController<CapabilityInfo>>;
  _capabilityInfoStreamControllers[key] = StreamController.broadcast();
  yield* _capabilityInfoStreamControllers[key]!.stream;
}