askarStoreOpen function

Future<AskarResult<StoreHandle>> askarStoreOpen(
  1. String specUri, {
  2. StoreKeyMethod? keyMethod,
  3. String? passKey,
  4. String? profile,
})

Implementation

Future<AskarResult<StoreHandle>> askarStoreOpen(
  String specUri, {
  StoreKeyMethod? keyMethod,
  String? passKey,
  String? profile,
}) async {
  Pointer<Utf8> specUriPointer = nullptr;
  Pointer<Utf8> keyMethodPointer = nullptr;
  Pointer<Utf8> passKeyPointer = nullptr;
  Pointer<Utf8> profilePointer = nullptr;

  final keyMethodStr = (keyMethod == null) ? "" : keyMethod.value;

  try {
    specUriPointer = specUri.toNativeUtf8();

    keyMethodPointer = keyMethodStr.toNativeUtf8();
    passKeyPointer = (passKey ?? "").toNativeUtf8();
    profilePointer = (profile ?? "").toNativeUtf8();

    final callback = newCallbackWithHandle();

    final initialResult = nativeAskarStoreOpen(
      specUriPointer,
      keyMethodPointer,
      passKeyPointer,
      profilePointer,
      callback.nativeCallable.nativeFunction,
      callback.id,
    );

    final completedResult = await callback.handleResult(initialResult);

    return AskarResult(completedResult.errorCode, StoreHandle(completedResult.value));
  } finally {
    freePointer(specUriPointer);
    freePointer(keyMethodPointer);
    freePointer(passKeyPointer);
    freePointer(profilePointer);
  }
}