load<T> method

Future<T> load<T>()

Load as string

Implementation

Future<T> load<T>() async {
  var result = _data[T];

  if ( result == null) {
    try {
      if (T == String)
        result = await rootBundle.loadString("assets/$path");
      else if (T == Uint8List) {
        final bytes = await rootBundle.load("assets/$path");

        result = bytes.buffer.asUint8List();
      }

      else if (T == Map<String, dynamic>) {
        var str = await load<String>();
        result = jsonDecode(str);
      }

      _data[T] = result;
    }
    on AssetLoaderException {
      rethrow;
    }
    on Exception catch (e) {
      throw AssetLoaderException("error loading asset", cause: e, path: "assets/$path");
    }
    catch(e) {
      print(e);
    }
  }

  return _data[T];
}