create static method

Future<Mecab> create({
  1. required String dictDir,
  2. String options = defaultOptions,
  3. String webLibmecabPath = defaultWebLibMecabPath,
})

Initializes this mecab instance, dictDir should be a directory that contains a Mecab dictionary (ex. IpaDic) options can be used libmecabPath only used on web, sets the path where the Mecab WASM binary is located.

Implementation

static Future<Mecab> create({
  required String dictDir,
  String options = defaultOptions,
  String webLibmecabPath = defaultWebLibMecabPath,
}) async {

  final instance = Mecab._internal();
  instance._mecabDartFfi = MecabDartFfi();

  // Delegate ALL initialization logic to the FFI classes.
  // On Native: This does nothing (Native Assets links it automatically).
  // On Web: The web FFI class internally calls loadMecabDartLib().
  await instance._mecabDartFfi.init(libmecabPath: webLibmecabPath);

  // Initialize the C++ pointer
  instance._mecabPtr = instance._mecabDartFfi.initMecabString(options, dictDir, webLibmecabPath);

  // Check if initialization failed
  try {
    instance._mecabDartFfi.nativeAddFunc(1, 2);
  }
  catch (e) {
    throw Exception("Failed to initialize Mecab. Check your dictionary path: '$dictDir' and library path: '$webLibmecabPath'. Error details: $e");
  }

  instance.weblibmecabPath = webLibmecabPath;
  instance.mecabDictDirPath = dictDir;
  instance.options = options;

  return instance;
}