init static method
Initialize ONNX model
Provide either modelBytes (loads from memory) or modelPath (loads from file).
modelPath is recommended for memory optimization.
Implementation
static Future<void> init({
Uint8List? modelBytes,
String? modelPath,
OrtSessionOptions? options,
}) async {
await _executor.run(() async {
OrtEnv.instance.init();
final sessionOptions = options ?? OrtSessionOptions();
final createdSession = _createSession(
modelBytes: modelBytes,
modelPath: modelPath,
sessionOptions: sessionOptions,
);
var isSwapped = false;
try {
final nextRequiredInputNames = _extractRequiredInputNames(
createdSession,
);
final previousSession = _session;
_session = createdSession;
_requiredInputNames = nextRequiredInputNames;
_dimensionState.reset();
isSwapped = true;
try {
previousSession?.release();
} catch (error) {
if (debugMode) {
debugPrint(
'[EmbeddingService] Warning: Failed to release previous session: $error',
);
}
}
} catch (e) {
if (!isSwapped) {
createdSession.release();
}
rethrow;
}
});
}