static Future init()

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));
  }