addInstance method

Future<void> addInstance(
  1. InstanceConfig config,
  2. DetectionCallback callback
)

Adds a new KeyWordFlutterPC instance from config, sets up the DetectionCallback, and starts keyword detection.

If an instance with config.id already exists, it simply starts detection on that existing instance instead of creating a new one.

Implementation

Future<void> addInstance(
  InstanceConfig config,
  DetectionCallback callback,
) async {
  final existingInstance = _instances[config.id];
  if (existingInstance != null) {
    // If instance exists, just start detection on it.
    await existingInstance.startKeywordDetection(config.id, config.threshold);
    return;
  }

  // Create a new KeyWordFlutterPC instance.
  final instance = createKeyWordFlutterPCInstance(
    config.id,
    isSticky: config.sticky,
  );

  await instance.createInstance(
    config.modelName,
    config.threshold,
    config.bufferCnt,
  );
  await instance.setKeywordDetectionLicense(gLicenseKey);

  _instances[config.id] = instance;

  // Listen to detection events.
  final stream = instance.onKeywordDetectionEvent();
  final listener = stream.listen(callback);
  instance.listeners.add(listener);

  // Start detection on the new instance.
  await instance.startKeywordDetection(config.id, config.threshold);
}