loadSimpleExtension method

void loadSimpleExtension()

Implementation

void loadSimpleExtension() {
  final dir = p.dirname(Platform.resolvedExecutable);
  final String simpleLibPath;
  String dictPath;
  if (Platform.isWindows) {
    simpleLibPath = p.join(dir, 'simple.dll');
    // data\flutter_assets\packages\fts5_simple\dicts
    dictPath = p.join(
        dir, 'data', 'flutter_assets', 'packages', 'fts5_simple', 'dicts');
  } else if (Platform.isMacOS) {
    simpleLibPath = 'libsimple';
    // ../Frameworks/App.framework/Resources/flutter_assets/packages/fts5_simple/dicts
    dictPath = p.join(dir, '..', 'Frameworks', 'App.framework', 'Resources',
        'flutter_assets', 'packages', 'fts5_simple');
    dictPath = p.join(dictPath, 'dicts');
  } else if (Platform.isLinux) {
    simpleLibPath = p.join(dir, 'lib', 'libsimple.so');
    // data/flutter_assets/packages/fts5_simple/dicts
    dictPath = p.join(
        dir, 'data', 'flutter_assets', 'packages', 'fts5_simple', 'dicts');
  } else {
    assert(false, 'Unsupported platform');
    return;
  }

  debugPrint('simpleLibPath: $simpleLibPath');
  debugPrint('dictPath: $dictPath');

  try {
    loadExtesnion(simpleLibPath);
  } catch (e, s) {
    debugPrint('Error loading simple extension: $e $s');
    return;
  }
  final exist = Directory(dictPath).existsSync();
  assert(exist, 'dictPath($dictPath) does not exist');
  if (!exist) {
    return;
  }
  select('select jieba_dict(?)', [dictPath]);
}