44 lines
1.2 KiB
Dart

import 'dart:ffi';
import 'dart:io';
import 'package:ffi/ffi.dart';
import 'package:flutter_example/generated_bindings.dart';
class Bindings {
static Bindings? _instance;
final NativeLibrary library;
Bindings._(NativeLibrary lib) : library = lib;
/// Load from lib
static Bindings init(String libName) {
/// The dynamic library in which the symbols for [NativeAddBindings] can be found.
final DynamicLibrary dylib = () {
if (Platform.isMacOS || Platform.isIOS) {
return DynamicLibrary.open('$libName.framework/$libName');
}
if (Platform.isAndroid || Platform.isLinux) {
return DynamicLibrary.open('lib$libName.so');
}
if (Platform.isWindows) {
return DynamicLibrary.open('$libName.dll');
}
throw UnsupportedError('Unknown platform: ${Platform.operatingSystem}');
}.call();
/// The bindings to the native functions in [_dylib].
return _instance ??= Bindings._(NativeLibrary(dylib));
}
static Bindings get instance => _instance!;
static int sum(int a, int b) {
final hello = instance.library.MyLib_Hello_Create(nullptr);
final result = instance.library.MyLib_Hello_Sum(hello, a, b, nullptr);
return result;
}
}