WasmFileUris.fromList constructor

WasmFileUris.fromList(
  1. List<WasmFileUris> uriOptions
)

A list of WasmFileUris that will be used as fallbacks if the previous one fails to load.

Implementation

factory WasmFileUris.fromList(List<WasmFileUris> uriOptions) {
  if (uriOptions.isEmpty) {
    throw Exception('uriOptions must not be empty');
  }
  final List<WasmFileUris> flat = [];
  void add(WasmFileUris value) {
    if (value.fallback != null) {
      flat.add(
        WasmFileUris(
          uri: value.uri,
          simdUri: value.simdUri,
          threadsSimdUri: value.threadsSimdUri,
        ),
      );
      add(value.fallback!);
    } else {
      flat.add(value);
    }
  }

  uriOptions.forEach(add);

  WasmFileUris option = uriOptions.last;
  for (int i = flat.length - 2; i >= 0; i--) {
    final current = flat[i];
    option = WasmFileUris(
      uri: current.uri,
      simdUri: current.simdUri,
      threadsSimdUri: current.threadsSimdUri,
      fallback: option,
    );
  }
  return option;
}