addInstanceMulti method
Implementation
Future<void> addInstanceMulti(
MultiInstanceConfig config,
void Function(Map<String, dynamic>) callback,
) async {
final existingInstance = _instances[config.id];
if (existingInstance != null) {
// If instance exists, just start detection again
await existingInstance.startKeywordDetection(config.id, config.thresholds[0]); // uses first threshold
return;
}
final alreadyExists = _configs.any((c) => c.id == config.id);
if (alreadyExists) {
final msg = '[UseModel] ERROR: Config with ID "${config.id}" already exists in _configs. This should not happen.';
print(msg);
}
// ✅ Add config to internal list
_configs.removeWhere((c) => c.id == config.id);
_configs.add(InstanceConfig(
id: config.id,
modelName: config.modelNames.first,
threshold: config.thresholds.first,
bufferCnt: config.bufferCnts.first,
sticky: config.sticky,
));
// Create a new KeyWordFlutterPC instance
final instance = createKeyWordFlutterPCInstance(
config.id,
isSticky: config.sticky,
);
await instance.createInstanceMulti(
config.id,
config.modelNames,
config.thresholds,
config.bufferCnts,
config.msBetweenCallback,
);
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.thresholds[0]); // or all?
}