in bindings/dart/lib/opendal.dart [31:90]
static Future<Storage> init({
required String schemeStr,
required Map<String, String> map,
}) async {
if (!RustLib.instance.initialized) {
var path = "rust/target/release/"; // default path
final name = Platform.operatingSystem;
final arch = SysInfo.kernelArchitecture;
// Set appropriate binary path based on OS and architecture
final nameLower = name.toLowerCase();
final archLower = arch.toString().toLowerCase();
if (nameLower == "linux") {
if (archLower == "x86_64") {
path = "rust/target/x86_64-unknown-linux-gnu/release/";
} else if (archLower == "aarch64" || archLower == "arm64") {
path = "rust/target/aarch64-unknown-linux-gnu/release/";
} else if (archLower == "arm") {
path = "rust/target/armv7-unknown-linux-gnueabihf/release/";
}
} else if (nameLower == "windows") {
if (archLower == "x86_64" || archLower == "amd64") {
path = "rust/target/x86_64-pc-windows-msvc/release/";
} else if (archLower == "x86" || archLower == "i386") {
path = "rust/target/i686-pc-windows-msvc/release/";
} else if (archLower == "aarch64" || archLower == "arm64") {
path = "rust/target/aarch64-pc-windows-msvc/release/";
}
} else if (nameLower == "macos") {
if (archLower == "x86_64") {
path = "rust/target/x86_64-apple-darwin/release/";
} else if (archLower == "aarch64" || archLower == "arm64") {
path = "rust/target/aarch64-apple-darwin/release/";
}
} else if (nameLower == "android") {
if (archLower == "aarch64" || archLower == "arm64") {
path = "rust/target/aarch64-linux-android/release/";
} else if (archLower == "x86_64") {
path = "rust/target/x86_64-linux-android/release/";
} else if (archLower == "x86" || archLower == "i386") {
path = "rust/target/i686-linux-android/release/";
} else if (archLower == "arm") {
path = "rust/target/armv7-linux-androideabi/release/";
}
} else if (nameLower == "ios") {
if (archLower == "aarch64" || archLower == "arm64") {
path = "rust/target/aarch64-apple-ios/release/";
} else if (archLower == "x86_64") {
path = "rust/target/x86_64-apple-ios/release/";
}
}
var config = ExternalLibraryLoaderConfig( // https://github.com/fzyzcjy/flutter_rust_bridge/issues/2460
stem: 'opendal_dart',
ioDirectory: path,
webPrefix: 'pkg/',
);
await RustLib.init(externalLibrary: await loadExternalLibrary(config));
}
return Storage._(Operator(schemeStr: schemeStr, map: map));
}