loadDynamicLibrary function

DynamicLibrary loadDynamicLibrary({
  1. String? path,
})

Implementation

DynamicLibrary loadDynamicLibrary({String? path}) {
  if (path != null && path.isNotEmpty) {
    final library = DynamicLibrary.open(path);
    _validateFreeTypeLibrary(library, path);
    return library;
  }

  if (Platform.isIOS) {
    return DynamicLibrary.process();
  }

  // Prefer the plugin-bundled FFI library produced by the `plugin_ffi`
  // build system (so the app doesn't need system-wide FreeType binaries).
  final candidates = <String>[
    if (Platform.isWindows) 'flutter_freetype.dll',
    if (Platform.isMacOS) 'libflutter_freetype.dylib',
    if (Platform.isLinux || Platform.isAndroid) 'libflutter_freetype.so',

    // Backwards-compatible fallbacks (system or legacy names).
    if (Platform.isWindows) 'freetype.dll',
    if (Platform.isWindows) 'libfreetype-6.dll',
    if (Platform.isMacOS) 'libfreetype.dylib',
    if (Platform.isMacOS) 'libfreetype.6.dylib',
    if (Platform.isLinux) 'libfreetype.so',
    if (Platform.isLinux) 'libfreetype.so.6',
    if (Platform.isAndroid) 'libfreetype.so',
  ];

  for (final name in candidates) {
    try {
      final library = DynamicLibrary.open(name);
      _validateFreeTypeLibrary(library, name);
      return library;
    } catch (_) {
      // try next
    }
  }

  throw Exception('[Error] Could not load FreeType dynamic library.');
}