loadFromNetwork method

Future<String> loadFromNetwork(
  1. String modelUrl, {
  2. bool forceReload = false,
})

Load a model from the network.

Tip: you can get a LanguageModelDescription via loadModelsList and use LanguageModelDescription.url.

Implementation

Future<String> loadFromNetwork(
  final String modelUrl, {
  final bool forceReload = false,
}) async {
  final modelName = path.basenameWithoutExtension(modelUrl);
  if (!forceReload && await isModelAlreadyLoaded(modelName)) {
    final modelPathValue = await modelPath(modelName);
    log('Model already loaded to $modelPathValue', name: 'ModelLoader');
    return modelPathValue;
  }

  final start = DateTime.now();

  final bytes = await httpClient
      .get(Uri.parse(modelUrl))
      .then((final response) => response.bodyBytes);

  final decompressionPath = await _extractModel(bytes);
  final decompressedModelRoot = path.join(decompressionPath, modelName);
  log(
    'Model loaded to $decompressedModelRoot in '
    '${DateTime.now().difference(start).inMilliseconds}ms',
    name: 'ModelLoader',
  );

  return decompressedModelRoot;
}